Напишите самую короткую программу или функцию, которая генерирует эти 1000 чисел, или последовательность (с индексами 0 или 1), которая начинается с них.
[0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,
1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1,
0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0,
1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1,
0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0,
1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1,
0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0,
1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1,
0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0,
1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1,
0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0,
1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1,
0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0,
1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1,
0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1,
1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0,
0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1,
1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0,
0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1,
1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0,
0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1,
1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0,
0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1,
1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0,
0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1,
1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0,
0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1,
1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0,
0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1,
1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0,
0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1,
1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0,
0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1,
1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0,
0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1,
1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0,
0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1,
1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0,
0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1,
1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0,
0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1,
1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0]
code-golf
sequence
kolmogorov-complexity
Джон Мангуаль
источник
источник
Ответы:
Желе ,
1110 байтСохранено 1 байт благодаря @Dennis
Попробуйте онлайн!
Как?
Сначала я заметил, что паттерн чередуется между сериями длины 4 и длиной 3, пропуская шаг длины 4 каждые несколько серий. Это привело меня к поиску числа, которое можно было бы разделить на текущий индекс, затем взять мод 2 и получить его - то есть получить наименее значимый бит - чтобы получить бит с этим индексом в серии. После долгих проб и ошибок я обнаружил, что
3.41845
именно так и поступает, но умножение на примерную обратную величину (.29253
) на байт короче.источник
Ḃ
но, видимо, это всего лишь мод 2, а не младший бит, поэтому я добавил,Ḟ
чтобы исправить это. Перевернуто в настоящее времяȷḶ×⁽q£:ȷ5Ḃ
работает, за 10 байт.Dyalog APL ,
998382 байтаПопробуйте онлайн!
Определенно не предполагаемое решение, так как в нем все еще много жестко закодированных данных, но это только начало.
источник
Рубин ,
34 29 2622 байтаПопробуйте онлайн!
Краткое объяснение: это работает из-за магического числа 629. Я заметил, что последовательность начинает повторяться после 629-го элемента, и я попытался «улучшить» какой-то существующий ответ, используя только целочисленную математику. Я обнаружил, что другое «магическое число» (0.29253) на самом деле 184/629.
источник
Желе , 31 байт
Учитывая шаблон, вероятно, есть еще более короткий путь ...
Попробуйте онлайн!
Как?
Использует структуру длины повторяющегося прогона, которая очевидна для глубины трех.
источник
Java 8,
756462 байтаПечатает всю последовательность без разделителя для сохранения байтов, потому что они будут только
0
и в1
любом случае.Порты @ETHproductions 'Jelly отвечают , потому что я сомневаюсь, что нахожу что-то короче ..
Попробуйте онлайн.
Объяснение:
Старый ответ, возвращающий полученный массив ( 75 байт ):
Попробуйте онлайн.
Объяснение:
источник
JavaScript (Node.js) ,
4133 байта, портСпасибо Рик Хичкок за 4+ байта
Попробуйте онлайн!
JavaScript (Node.js) , 121 байт, оригинал
Попробуйте онлайн!
источник
f=(i=0)=>i<1e3?(i*.29253&1)+f(i+1):''
Stax ,
1311 байтЗапустите и отладьте его на staxlang.xyz!
Портируйте на Stax ответа Jelly @ ETHproductions (до его изменения) с некоторыми изменениями @recursive, чтобы сохранить два байта.
источник
Wolfram Language (Mathematica) , 96 байт
Я искал сотовый автомат, который смотрит на 4 соседа слева и выдает шаблон шага влево, видимый в данных, когда вы разбиваете данные на длину 7 и сохраняете каждую третью строку.
Этот клеточный автомат будет работать в течение 29 поколений, каждое из которых трижды дублируется, что идеально соответствует последовательности для символов от 1 до 629. Однако последовательность начинает повторяться с 630-го символа, а не продолжает наблюдаемый шаблон, поэтому для обработки повторения необходим дополнительный код усеченный образец. Я генерирую основной шаблон дважды, чтобы получить 1258 символов.
Без этого сбоя мы могли бы сделать это за более короткие 74 байта. 47 - это число поколений, необходимое для получения 1000 символов (на самом деле это 1008 = 48 * 7 * 3)
Попробуйте онлайн!
источник
Z80Golf , 27 байт
Попробуйте онлайн!
Переведено из этого кода C:
Разборка:
По сути, это арифметический подход с фиксированной запятой: (11149 + 65536) / 2 18 ≈ 0,29253, постоянная, используемая другими ответами.
источник
J , 17 байт
AJ порт ETHproduction желе ответ.
Попробуйте онлайн!
источник
Japt , 13 байт
Японская версия EJproduction's Jelly answer .
Исправлена ошибка благодаря Оливеру .
Попробуй это здесь.
источник
Древесный уголь , 13 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Спасибо @ ASCII-only за разрешение индексирования принимать числа с плавающей точкой, которые приводятся к целому числу (а затем автоматически уменьшаются по модулю 2 в этом случае).
источник
C
555352 байтаПорт Кевина Круйссена Java ответ . Попробуйте это онлайн здесь .
Спасибо vazt за игру в гольф 2 байта и Джонатану Фреху за игру в гольф еще.
Безголовая версия:
источник
i
инициализируется в 0, так как он глобальный, так что вы можете удалитьi=0
из инициализатора цикла for, чтобы сохранить 3 байта. Также, если вы введете вторую переменную (в качестве параметраf()
) и назначитеi++*.29253
ее, вы можете избежать преобразования и сохранить еще 2 байта:i;f(j){for(;i<1e3;)printf("%d",(j=i++*.29253)%2);}
попробуйте онлайн!i
инициализируется значением 0, но если мы хотим вызвать эту функцию более одного раза, этого недостаточно. Использование,j
чтобы избежать броска - большой гольф, спасибо./// , 63 байта
Попробуйте онлайн!
источник