На 13/03/2018 16:45 UTC победителем является ответ № 345 от Скрубла . Это означает, что конкурс официально завершен, но вы можете продолжать публиковать ответы, если они следуют правилам.
Кроме того, просто быстрый крик в тройку ответов с точки зрения количества ответов:
1. NieDzejkob - 41 ответ
2. KSmarts - 30 ответов
3. Гипер Нейтрино - 26 ответов
Это цепочка ответов, в которой используются последовательности из OEIS и длина предыдущего представления.
Этот цепочечный вопрос ответа будет работать следующим образом:
- Я выложу первый ответ. Все остальные решения должны исходить из этого.
- Следующий пользователь (назовем их userA) найдет последовательность OEIS, в которой его порядковый номер (см. Ниже) равен длине моего кода.
- Используя последовательность, они должны затем кодировать на неиспользуемом языке программу, которая принимает целое число в качестве входных данных n и выводит n-е число в этой последовательности.
- Затем они публикуют свое решение после моего, и новый пользователь (userB) должен повторить то же самое.
n
Й член последовательности является термином п раз после того , как первый, работающим с первым значением является первым значением дано на его странице OEIS. В этом вопросе мы будем использовать 0-индексацию для этих последовательностей. Например, с A000242 и n = 3
, правильный результат будет 25 .
Тем не мение!
Это не код-гольф , поэтому самый короткий код не имеет значения. Но длина вашего кода все равно оказывает влияние. Чтобы предотвратить дублирование последовательностей, ваш счет должен быть уникальным . Это означает, что никакая другая представленная здесь программа не может иметь такую же длину в байтах, как ваша.
Если для длины последнего сообщения нет последовательности, то последовательность для вашего сообщения является самой низкой неиспользуемой последовательностью. Это означает, что используемые последовательности также должны быть уникальными, и последовательность не может совпадать с вашей учетной записью.
После того, как ответ был опубликован и новые ответы не были опубликованы в течение более недели, победит ответ до того, как будет опубликован последний опубликованный ответ (тот, кто не разорвал цепочку).
Вход и выход
Применяются общие правила ввода и вывода. Входные данные должны быть целым числом или строковым представлением целого числа, а выходные данные должны быть правильными значениями в последовательности.
форматирование
Как и в большинстве вопросов, связанных с ответами , отформатируйте ответ следующим образом
# N. language, length, [sequence](link)
`code`
[next sequence](link)
*anything else*
правила
- Вы должны подождать не менее 1 часа, прежде чем отправлять ответ после публикации.
- Вы не можете публиковать дважды (или более) подряд.
- Номер индекса последовательности - это номер после
A
детали с удаленными начальными нулями (например, дляA000040
номера индекса 40). - Вы можете предположить, что ни ввод, ни требуемый вывод не будут выходить за пределы числового диапазона ваших языков, но, пожалуйста, не злоупотребляйте этим, выбирая язык, который может использовать только номер 1, например.
- Если длина вашего сообщения превышает 65536 символов, укажите ссылку для доступа к коду (например, pastebin).
n
никогда не будет больше 1000 или выходит за пределы последовательности, просто чтобы не допустить расхождения в точности, чтобы помешать языку конкурировать.- Каждые 150 (действительных) ответов увеличивают количество раз, когда язык может использоваться. Таким образом, после публикации 150 решений каждый язык может использоваться дважды (с учетом всех предыдущих ответов). Например, когда опубликовано 150 ответов, Python 3 может использоваться дважды, но из-за того, что он уже использовался один раз, это означает, что его можно использовать только один раз, пока не будет опубликовано 300 ответов.
- Пожалуйста, помогите и опубликуйте ссылку на следующую последовательность, которая будет использоваться. Это не обязательно, но является рекомендацией.
- Разные версии языков, например, Python 2 и Python 3, являются разными языками . Как правило, если обе версии доступны в Try It Online, это разные языки, но имейте в виду, что это общее правило, а не жесткий ответ.
- Он не запрещен, но, пожалуйста, постарайтесь не копировать код со страницы OEIS, а попытаться его решить.
- Жесткое кодирование допускается только в том случае, если последовательность конечна. Обратите внимание, что ответ, который вызвал это ( # 40 ), является исключением из правила. Несколько ответов на ранних этапах в жестком коде цепочки, но их можно игнорировать, поскольку нет смысла удалять цепочку, скажем, до # 100.
Фрагмент цепочки ответов
источник
float
/double
типа, чтобы получить значения для большегоn
?Ответы:
345. брейнфук , 162 байта, A000301
Попробуйте онлайн!
Следующая последовательность!
Он принимает в качестве ввода символ с кодовой точкой
n
(согласно спецификациям BF) и выводит таким же образом. Чтобы увидеть цифры, я предлагаю использовать EsotericIDE @ Timwi .Объяснение:
Так как при этом сохраняются все числа Фибоначчи, вплоть до важного, произойдет сбой для ДЕЙСТВИТЕЛЬНО большого ввода на ограниченной ленте.
Это может быть значительно сокращено путем жесткого кодирования базы (2), но игра в гольф не является проблемой вообще.
источник
22. FiM ++ , 982 байта, A000024
Следующая последовательность
источник
1. Треугольный , 10 байтов, A000217
Попробуйте онлайн!
Следующая последовательность
Как это устроено
Код форматируется в этот треугольник
с IP, начинающимся с
$
и перемещающимся на юго-восток (SE, хе), работает так:источник
A000217 Triangular numbers
...73. Звездное , 363 байта, A000252
Попробуйте онлайн!
Следующая последовательность
Использует формулу «
a(n) = n^4 * product p^(-3)(p^2 - 1)*(p - 1)
где произведение находится над всеми простыми числами p, которые делят n» из OEIS.Луна не работает, но эй, это не код-гольф.
источник
97. Python 3 (PyPy) , 1772 байта, A000236
Прежде всего, большое спасибо доктору Максу Алексееву за терпение ко мне. Мне очень повезло, что я смог связаться с ним по электронной почте, чтобы понять эту проблему. Его ответ по математике здесь очень помог мне. Спасибо Wheat Wizard за помощь. :)
Попробуйте онлайн!
Если это дает неправильный результат, просто увеличьте 100 до чего-то большего. Я думаю, 10000 будет работать на 4, но я оставлю свой компьютер включенным на ночь, чтобы подтвердить это; это может занять пару часов, чтобы закончить.
Обратите внимание, что часть (PyPy) предназначена для повторного использования Python. Я действительно не знаю многих других языков, и я не собираюсь пытаться перенести это на Java и рискую не закончить вовремя.
Следующая последовательность (Также, пожалуйста, не делайте больше сумасшедших математических заданий; у меня не осталось версий Python, так что кому-то еще придется сохранить этот вызов D :)
источник
107. TrumpScript , 1589 байт, A000047
Попробуйте онлайн!
При первом программировании на TrumpScript, возможно, я несколько раз изобрел колесо - 4 строки посвящены вычислению 2 ^ n. Я пытался сделать так, чтобы Трамп мог что-то сказать. В качестве бонуса, вот скрипт Python, который я написал, чтобы убедиться, что я все делаю правильно. Есть некоторые отличия от вышеупомянутой программы, но большая ее часть прямо эквивалентна.
Следующая последовательность!
источник
I will make cat feel good
О_ОI will make Business Cat feel good
, не будет работать ...30. Python 1 , 1112 байт, A000046
Попробуйте онлайн!
Даже не собираюсь беспокоиться об этом. Эй, это не самый длинный ответ Python на этом сайте!
Следующая последовательность
источник
_
имеет значения; нам просто нужно повторить это много раз2. Haskell, 44 байта, A000010
Попробуйте онлайн!
Следующая последовательность
источник
9. Pyth , 19 байтов, A000025
Тестовый пакет .
Следующая последовательность
источник
>Q0
вместоQ
того, чтобы, вы знаете, иметь следующую последовательность, которая будет A000019.Keywords: easy,nice
8. Mathematica (10,1), 25 байтов, A000070
Следующая последовательность
источник
206. Протон , 3275 байт, A000109
Попробуйте онлайн!
Следующая последовательность
источник
308. ENIAC (симулятор) , 3025 байт, A006060
псевдокод:
Нет онлайн симулятора, результат выполнения:
Регистры и константы:
Программный сигнал и поток данных:
Полный «код» на pastebin или в комментариях HTML в разметке этого ответа, чтобы предотвратить одновременный просмотр ссылки и довольно длинного ответа. Это весело!
Следующая последовательность
источник
15. CJam, 85 байт, A000060
Онлайн демо
Следующая последовательность
рассечение
OEIS дает
где
источник
67. LOLCODE , 837 байтов, A000043
Мой ключ от заглавной буквы обязательно должен сбежать, поэтому я написал все это, удерживая нажатой клавишу Shift.
Попробуйте онлайн!
Следующая последовательность
источник
PRAIME
upper
этоgggUG
в VIM, где я написал это, но я не10. Магма, 65 байт, A000019
Попробуй здесь
лол встроенный
Следующая последовательность
источник
24. Юлия 0,5 , 33 байта, A000023
Разложение egf exp (−2 * x) / (1 − x).
Попробуйте онлайн!
Следующая последовательность
источник
121. Пип , 525 байтов, A000022
Онлайн демо
Следующая последовательность
Забавный факт: когда задача была впервые опубликована, я составил список небольших неприятных порядковых номеров, к которым я хотел стремиться с помощью CJam, и A000022 был в начале списка.
Это реализует функцию генерации, описанную в EM Rains и NJA Sloane, « О перечислении алканов (или 4-валентных деревьев» Кэли) , Journal of Integer Sequence, Vol. 2 (1999), взяв сумму за столько слагаемых, сколько необходимо для фиксирования коэффициента th, а затем выдвинув три четверти суммы. В частности, телескопирование первой половины означает, что индекс цикла должен применяться только к одному из них, а не ко всем из них.
Ck
n
S4
Th
Код разбивается как
Обратите внимание, что это моя первая в истории программа Pip, поэтому она, вероятно, не очень идиоматична.
источник
156. C # (моно), 2466 байт, A000083
Примечание: оценка составляет 2439 байт для кода и 27 для флага компилятора
-reference:System.Numerics
.Демо онлайн . Это полная программа, которая принимает данные из командной строки.
Следующая последовательность
рассечение
Я следую за комментарием Боуэна в OEIS о том, что генерирующая функция, в
A000083(x) = A000237(x) + A035349(x) - A000237(x) * A035350(x)
которой компонент, генерирующий функции, связан преобразованиями какA000237(x) = x EULER(A035350(x))
A035350(x) = BIK(A000237(x))
A035349(x) = DIK(A000237(x))
Я использую определения
BIK
иDIK
из https://oeis.org/transforms2.html, но формулы, похоже, содержат несколько опечаток. Я исправил этоLPAL
без особых затруднений и независимо вывел формулу,DIK
основанную на применении перечисления Полиа к индексу цикла диэдральной группы . Между № 121 и № 156 я много узнаю о перечислении Поли. Я представил некоторые ошибки , которые могут оказаться полезными для других людей, если эти преобразования снова появятся в цепочке.источник
3. JavaScript (ES6), 38 байт, A000044
Попробуйте онлайн!
Следующая последовательность (должна быть простой: P)
источник
13. VB.NET (.NET 4.5), 1246 байт, A000131
A001246
Попробуйте онлайн!
источник
91. Python 2 (PyPy) , 1733 байта, A000066
Попробуйте онлайн!
Я надеюсь, что использование Python 2 PyPy считается еще одной важной версией. Если бы кто-то мог достать мне интерпретатор Python 0, я бы тоже мог это использовать, но я надеюсь, что это действительно.
Это начинается в 1 вершине и работает, создавая представление матрицы смежности каждого возможного неориентированного графа с таким количеством вершин. Если он трехвалентный, он просматривает наборы ребер, которые будут отсортированы по длине. Если первый найденный цикл будет слишком коротким, он будет двигаться дальше. Если первый найденный цикл соответствует входу (смещение на 3), он выведет правильный счетчик вершин и завершит работу.
Следующая последовательность <- легко оторваться от всей этой математической чепухи: D
РЕДАКТИРОВАТЬ : я добавил некоторые оптимизации, чтобы сделать его немного быстрее (все еще не могу вычислить третий член в пределах 60-секундного лимита TIO), не меняя при этом байтовый счет.
источник
232. Funky ,
326330332 байта, A000938Попробуйте онлайн!
Полиглот с Javascript. Попробуйте онлайн!
Следующая последовательность .
Используйте формулу на странице OEIS для
O(n^2 log n)
сложности, а не наивныйO(n^6)
.Быстрое объяснение:
a[n_] := 2*Sum[(n - k + 1)*(n - m + 1)*GCD[k - 1, m - 1], {m, 2, n}, {k, 2, n}] - n^2*((n^2 - 1)/6)
описанную в разделе кода Mathematica.Доказательство формулы:
Формула эквивалентна этому .
Пусть размер ограничивающей рамки из трех точек будет
m * k
. Рассмотрим 2 случая:k != 0
иm != 0
: Есть 2 способа выбора ориентации трех точек (\
или/
),gcd(k-1, m-1)-1
способы выбора точки, лежащей между двумя другими точками, и(n - k) × (n - m)
способы выбора положения ограничительной рамки.k == 0
илиm == 0
: Есть 2 способа выбора ориентации (|
или-
),n
способы выбора строки / столбца, на котором лежат точки, иBinomial[n, 3] == (n*(n-1)*(n-2)) / 6
способы выбора точек в этой строке / столбце.Некоторые заметки полиглота:
return
. Однако, как объяснил ATaco , [Funky] считаетreturn
переменную. Таким образом, он анализирует это выражение, которое обычно ничего не делает, а затем анализирует следующее выражение. И это используется в качестве вывода.^
как побитовый xor, в отличие от Funky, которые используют^
как возведение в степень. Поэтомуn*n
необходимо использовать вместоn^2
обеспечения совместимости Javascript.+
,-
,*
и т.д.) имеет одинаковый приоритет и правоассоциативные, поэтому выражения должны быть в круглых скобках правильно.источник
11. Par / GP, 64 байта, A000065
Попробуйте онлайн!
Следующая последовательность
источник
;_; I solved A000064 and you changed it. Downvoted.
281. Java 5, 11628 байт, A000947
Попробуйте онлайн!
Примечание:
Это может разорвать цепь.Новый рекорд на большой счет!Поскольку я (ошибочно?) Использую пробелы вместо вкладок, количество байтов больше, чем необходимо. На моей машине это 9550 байт. (на момент написания этой редакции)20
инfor (int i = 0; i < 20; ++i)
к1000
)Ура! Это может вычислить больше терминов, чем указано на странице OEIS! (впервые, для испытания мне нужно использовать Java), если у OEIS где-то больше терминов ...
Быстрое объяснение
Объяснение описания последовательности.
В последовательности задают номер свободного непланарного полиеноида с группой симметрии C 2v , где:
Например, рассмотрим деревья
Первый не может быть встроен в гексагональную решетку, а второй может. Это конкретное вложение считается отличным от третьего дерева.
(2)
а(3)
дерево сверху плоское. Этот, однако, является неплоским:(есть 7 вершин и 6 ребер)
Например, единственный полиеноид с 2 вершинами
имеет 3 плоскости отражения: горизонтальную
-
, вертикальную|
и параллельную экрану компьютера■
. Это слишком много.С другой стороны, этот
имеет 2 плоскости отражения:
/
а■
.Объяснение метода
А теперь подход о том, как на самом деле считать число.
Во-первых, я принимаю формулу
a(n) = A000063(n + 2) - A000936(n)
(приведенную на странице OEIS) как должное. Я не читал объяснение в газете.[TODO исправить эту часть]
Конечно, считать планар проще, чем считать непланарно. Это то, что делает бумага тоже.
Итак ... программа подсчитывает количество плоских полиеноидов и вычитает их из общего числа.
Поскольку дерево в любом случае является плоским, оно, очевидно, имеет
■
плоскость отражения. Таким образом, условие сводится к тому, чтобы «посчитать количество деревьев с осью отражения в его 2D представлении».Наивным способом было бы сгенерировать все деревья с
n
узлами и проверить правильность симметрии. Однако, поскольку нам нужно только найти количество деревьев с осью отражения, мы можем просто сгенерировать все возможные полудерева на одной половине, отразить их через ось и затем проверить правильность симметрии. Более того, поскольку сгенерированные полиеноиды являются (плоскими) деревьями, он должен касаться оси отражения ровно один раз.Функция
public static Graph[] expand(Graph[] graphs, Point.Predicate fn)
принимает массив графиков, каждый из которых имеетn
узлы, и выводит массив графиков, каждый из которых имеетn+1
узлы, не равные друг другу (при переводе), так что добавленный узел должен удовлетворять предикатуfn
.Рассмотрим 2 возможных оси отражения: одна проходит через вершину и совпадает с ребрами (
x = 0
), а другая - перпендикулярная биссектриса ребра (2x = y
). Мы можем взять только один из них, потому что сгенерированные графы, в любом случае, изоморфны.Итак, для первой оси
x = 0
мы начинаем с базового графа, состоящего из одного узла(1, 0)
(в случаеn
нечетного) или двух узлов с ребром между(1, 0) - (2, 0)
(в случаеn
четного), а затем расширяем узлы так, чтобыy > 0
. Это делается в разделе «Тип отражения 1» программы, а затем для каждого сгенерированного графа отражается (отражается) через ось Xx = 0
(g.reflectSelfX()
), а затем проверяется, имеет ли он правильную симметрию.Однако обратите внимание, что если
n
делится на 2, таким образом мы посчитали каждый граф дважды, потому что мы также генерируем его зеркальное отображение по оси2x = y + 3
.(обратите внимание на 2 оранжевых)
Аналогично для оси
2x = y
, если (и только если)n
является четным, мы начинаем с точки(1, 1)
, генерируем графики таким образом, чтобы2*x > y
и отражали каждый из них по2x = y
оси (g.reflectSelfType2()
), соединялись(1, 0)
с ними(1, 1)
и проверяли, имеют ли они правильную симметрию. Не забудьте разделить на 2 тоже.источник
6. R , 71 байт, A000072
Попробуйте онлайн!
Следующая последовательность
источник
the answer before the last posted (the one who didn't break the chain) will win
14. Python 2 , 60 байт, A001246
Попробуйте онлайн!
Следующая последовательность
источник
26. TI-BASIC, 274 байта , A000183
Оценивает рекурсивную формулу, найденную по ссылке OEIS.
Следующая последовательность
источник
34. Пролог (SWI) , 168 байт, A000073
Попробуйте онлайн!
Следующая последовательность
источник
49. SageMath , 74 байта, A000003
Попробуйте онлайн!
Следующая последовательность
источник
76. Пигмей , 4147 байт, A000036
Следующая последовательность
Вы можете запустить код на этой странице . Например, вы можете получить 10-е число в последовательности, скопировав приведенный выше код и добавив:
источник