Вступление
В геометрии кривая Пеано является первым примером кривой заполнения пространства, которую Джузеппе Пеано открыл в 1890 году. Кривая Пеано является сюръективной непрерывной функцией от единичного интервала до единичного квадрата, однако она не инъективна. Пеано был мотивирован более ранним результатом Георга Кантора, что эти два набора имеют одинаковую мощность. Из-за этого примера некоторые авторы используют фразу «кривая Пеано» для более общего обозначения любой кривой заполнения пространства.
Вызов
Программа принимает входные данные, которые являются целыми числами n
, и выводит чертеж, представляющий n
итерацию кривой Пеано, начиная со стороны 2, показанной в самой левой части этого изображения:
вход
Целое число n
дающее номер итерации кривой Пеано. Дополнительно, дополнительный вклад описан в разделе бонусов.
Выход
Чертеж n
итерации кривой Пеано. Рисунок может быть как рисунком ASCII, так и «настоящим» рисунком, в зависимости от того, какой из них проще или меньше всего.
правила
- Ввод и вывод может быть дан в любом удобном формате (выберите наиболее подходящий формат для вашего языка / решения).
- Нет необходимости обрабатывать отрицательные значения или неверный ввод
- Либо полная программа или функция приемлемы.
- Если возможно, укажите ссылку на среду онлайн-тестирования, чтобы другие люди могли опробовать ваш код!
- Стандартные лазейки запрещены.
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
Бонусы
Поскольку это не должно быть прогулкой в парке (по крайней мере, на большинстве языков, о которых я могу думать), бонусные баллы начисляются за следующее:
- -100 байт, если ваш код генерирует GIF построения кривых Пеано до
n
. - -100 байт, если ваш код рисует кривую заполнения пространства для любой прямоугольной формы (очевидно, кривая Пеано работает только для квадратов). Можно предположить, что тогда входные данные принимают форму,
n l w
гдеn
имеет то же значение, что и раньше (номер итерации), но гдеl
иw
становится длиной и шириной прямоугольника, в котором нужно нарисовать кривую. Еслиl == w
, это становится правильной кривой Пеано.
Отрицательные оценки допускаются (но возможны ли они ...).
редактировать
Пожалуйста, включите вывод вашей программы в решение для n == 3 (l == w == 1)
.
n
использоваться, еслиl
иw
являются также входами ??????????? И будет ли кривая Пеано особым случаем - это не единственная кривая заполнения, поэтому некоторым алгоритмам, возможно, придется специально ее использоватьОтветы:
Mathematica, оценка 60 - 100 - 100 = -140
Чистая функция. Принимает
n
и{l, w}
(ширина и высота) в качестве входных данных и дает анимированную графику в качестве выходных данных. Сначала создается кривая Пеано n- го порядка сPeanoCurve
. Поскольку для случая l = w все еще необходимо создать кривую Пеано, мы перевернем выражение на уровне 3, аналогично ответу DavidC ; для l ≠ w мы простоScale
кривая к прямоугольнику. Эта кривая все еще будет заполнять пространство, удовлетворяя второй бонус. Для первого бонуса мы простоAnimate
его по всем размерам. Обратите внимание, что OP предположил, что это достаточно отличается от DavidC, чтобы оправдать свой собственный ответ. Результат для n = 3, l = w = 1 выглядит следующим образом:источник
GFA Basic 3.51 (Atari ST),
156134124 байтаОтредактированный вручную листинг в формате .LST. Все строки заканчиваются на
CR
, включая последнюю.Расширено и прокомментировано
Пример вывода
источник
Perl 6 , 117 байт
Попробуйте онлайн!
0 индексированные. Возвращает двумерный массив символов Юникода. Основная идея заключается в том, что для нижних строк выражение
дает образец
Для верхних строк выражение
объяснение
источник
K (нгн / к) ,
372726 байтПопробуйте онлайн!
возвращает логическую матрицу
|'y
это синтаксис, специфичный для ngn / k. другие диалекты требуют,:
чтобы сделать монадический глагол:|:'y
источник
1
(если они поддерживаются вашим браузером)Вольфрам Язык
8336 байт (возможно, -48 байт с бонусом)Начиная с версии 11.1,
PeanoCurve
является встроенным.Мое оригинальное, неуклюжее представление потратило много байтов на
GeometricTransformation
иReflectionTransform.
Эта значительно уменьшенная версия была предложена алефальфой .
Reverse
Требовалось правильно ориентировать вывод.Пример 36 байт
бонус
Если это соответствует бонусу в 100 пунктов, он весит 52 - 100 = -48. Код
[5]
не был засчитан, только чистая функция.источник
Graphics[Reverse/@#&/@PeanoCurve@#]&
BBC BASIC, 142 символа ASCII (токены 130 байтов)
Скачать переводчик можно по адресу http://www.bbcbasic.co.uk/bbcwin/download.html.
источник
HTML + SVG + JS,
224213 байтВыход зеркально отображается горизонтально.
Попробуйте онлайн! (печатает HTML)
Показать фрагмент кода
источник
Логотип, 89 байт
Порт @ Arnauld's Atari BASIC ответ. Чтобы использовать, сделайте что-то вроде этого :
источник
Stax , 19 байт
Запустите и отладьте его
Выход за 3:
источник