Вывод - это форма, которая охватывает 1009 пикселей.
- Форма должна принимать форму единой замкнутой непересекающейся петли.
На входе положительное ненулевое целое число.
- Каждый вход должен давать выход, который является уникальным, то есть каждый выход должен быть уникальным из тех, которые генерируются с использованием более низкого входа.
Победа определяется самым большим входным лимитом:
- Предел ввода вашего представления считается на 1 меньше, чем самый низкий вход, который дает неуникальный или иначе недействительный вывод.
- Например, если действительный и уникальный вывод создается для входа 1, 2 или 3, но не 4, ваш предел ввода равен 3.
Для исходного кода существует ограничение в 1009 байт. Если есть ничья, выигрывает запись с наименьшим количеством байтов.
Ограничения и уточнения:
- Максимальный размер фигуры составляет 109 на 109 пикселей. Размер включает в себя линию, используемую для рисования фигуры.
- Линия имеет постоянную ширину.
- Закрытое пространство должно быть полностью заключено в линию - вы не можете использовать границу файла изображения.
- Вложенные 1009 пикселей относятся только к закрытому пространству. Это не включает в себя строку.
- Выходное изображение.
- Больше никаких графических ограничений нет - например, по цвету, толщине линий и т. Д.
- Уникальность вывода относится только к замкнутому пространству. Изменения в строке или другие графические изменения не имеют значения, если закрытое пространство не является уникальным.
- Перевод формы не уникален. Вращения, отражения и любые другие преобразования считаются уникальными.
- Вывод должен быть воспроизводимым - один и тот же ввод всегда будет давать одинаковый вывод
- Не должно быть связи между выходами, последовательными или иными.
- За пределами «входного предела» представления нет определенного вывода.
- Никакой другой ввод или извлечение внешних данных не допускается.
- Линия должна быть непрерывной - то есть пиксели должны касаться (касание угла считается).
- Пиксель - это наименьшая единица «рисования», используемая вашим методом рисования, и не обязательно соответствует пикселю экрана.
Примеры:
Вот пример правильной формы:
Следующие фигуры недопустимы:
РЕДАКТИРОВАТЬ: Касание строки:
- Закрытое пространство должно быть непрерывным, что определяется как касание пикселей. Касание углов имеет значение.
Линия не может ограничивать пространство на своей внешней стороне. Это изображение, опубликованное @Sparr, иллюстрирует эту точку - допустимы только первые фигуры в каждой строке:
Внешние стороны линии могут касаться, но не таким образом, чтобы охватывать пространство.
- Соприкасающиеся линии могут не перекрываться - например, две соприкасающиеся линии толщиной 1 пиксель будут иметь общую толщину 2 пикселя, а не 1 пиксель.
Ответы:
Python + Pycairo, 2 100 фигур
Начнем с очевидного.
Берет номер в командной строке и пишет
o.png
.источник
Rotations [...] count as unique.
BBC Basic, оценка 10 ^ 288 (минус 1, если ноль не засчитан)
Загрузите interepreter по адресу http://sourceforge.net/projects/napoleonbrandy/ (не мой обычный базовый интерпретатор BBC, который не поддерживает достаточно длинные строки.)
Чтобы закодировать много информации, вам нужно много периметра. Это означает, что тонкая форма. Я начинаю с вертикальной полосы в 49 пикселей слева и добавляю к ней десять щупалец по 96 пикселей. Каждое щупальце может кодировать 96 битов аналогично решению @ ell, всего 960 битов.
Поскольку BBC Basic не может обрабатывать такие большие числа, число до 288 десятичных цифр вводится в виде строки, и каждый набор из 3 десятичных цифр преобразуется в 10-битное двоичное число. Каждый бит затем используется для покачивания одного из щупалец на один пиксель, если он является
1
(но не если он является0
.) Программа может обрабатывать до 288/3 = 96 таких наборов из 3 цифрВыход
Типичный вывод для 288-значного числа. Обратите внимание, что 999 - это 1111100111 в двоичном формате. Вы можете видеть, как наборы из 9 цифр вызывают волнистость щупалец.
Технические детали
A. Ответ на пункт 3 Мартина "связана ли форма, если ее пиксель касается только по углу?" было "да", так что я понимаю, что мой ответ соответствует. Тем не менее, если вы чередуете (например) 999 и 000 в каждом ряду, это выглядит очень занятым.
Б. Если мы рассмотрим это как прямоугольник с укусами, вынутыми из стороны, вы увидите, что я разрешил три пикселя между каждой парой соседних щупалец, чтобы черная линия вокруг снаружи никогда не касалась себя. В этом отношении нет конкретного правила (я надеюсь, что причина моего запроса будет более ясной в свете моего ответа.) Если линии позволено касаться ВНЕ фигуры, я мог бы сдвинуть щупальца вместе и использовать меньше пикселей для вертикальная черта (и, следовательно, сделать щупальца немного длиннее). Однако было бы очень сложно определить на глаз, был ли пиксель внутри или снаружи фигуры, поэтому я думаю, что моя интерпретация заключается в том, что внешняя сторона черной линии никогда не должна касаться Сам по себе лучший.
C. BBC basic в этом режиме экрана обрабатывает квадрат экрана размером 2x2 как один пиксель. Я оставил это как есть, потому что это помогает просматривать, если форма не слишком мала. Каждый из этих основных пикселей BBC рассматривается как блок из 4x4 логических единиц. С самого начала разработчики BBC basic имели возможность предвидеть, что разрешение экрана за один день увеличится, поэтому они сделали логическое разрешение выше физического.
источник
Mathematica, 496 байт, Оценка: большой размер (> 1157)
Нижняя граница, которую я там получил, смехотворно низкая, но я пока не нашел лучшего способа проверки, чем грубая сила.
Я еще не играл в гольф, потому что в этом не было необходимости. Я сделаю это, как только кто-то докажет, что он действительно связывает меня.
Алгоритм в основном выполняет заливку из верхнего левого угла изображения 109x109 (смещение на один пиксель, чтобы учесть линию), и когда я залил 1009 ячеек, я останавливаюсь и отмечаю границу. Вы сказали, что цвета зависят от нас, поэтому фон белый, линия черная, а внутренняя часть серая (при необходимости я могу удалить серый для нескольких символов).
Заполнение наводнения довольно ограничено, но это гарантирует, что мне не придется беспокоиться о дырах. Ослабление этих ограничений, вероятно, значительно увеличит мою (пока неизвестную) оценку.
Я постараюсь поставить некоторые более низкие оценки на счет сейчас.
источник
Python 2, оценка> 10 ^ 395
Это очень медленно, и мне не удалось получить какой-либо результат, кроме n = 0, но если вы хотите проверить его ниже
SIZE
(количество пикселей) иBOUND
максимальную длину стороны ограничительного квадрата, и вы должны быть в состоянии чтобы получить много результатов. Было очень трудно попытаться подсчитать, сколько он произведет; Я довольно уверен, что нижняя граница, которую я даю, является точной, но я подозреваю, что фактическое число будет значительно больше, и я могу попытаться улучшить его позже.источник
n=0
? А также можете ли вы объяснить, как вы достигли 10 ^ 395?