Вызов:
Здесь у нас есть первые 100 элементов последовательности:
6,5,4,3,2,1,66,65,64,63,62,61,56,55,54,53,52,51,46,45,44,43,42,41,36,35,34,33,32,31,26,25,24,23,22,21,16,15,14,13,12,11,666,665,664,663,662,661,656,655,654,653,652,651,646,645,644,643,642,641,636,635,634,633,632,631,626,625,624,623,622,621,616,615,614,613,612,611,566,565,564,563,562,561,556,555,554,553,552,551,546,545,544,543,542,541,536,535,534,533,...
Как формируется эта последовательность? Сначала у нас есть число в диапазоне [6, 1]
(все возможные значения одного кубика от самого высокого до самого низкого). Затем у нас есть числа [66..61, 56..51, 46..41, 36..31, 26..21, 16..11]
(все возможные конкатетированные значения двух кубиков от самого высокого до самого низкого). И т.д.
Это относится к последовательности OEIS A057436: содержит только цифры от 1 до 6 , но все числа с одинаковым количеством цифр отсортированы в последовательности в обратном порядке.
Задача состоит в том, чтобы выбрать один из этих трех вариантов для вашей функции / программы в приведенной выше последовательности:
- Возьмите вход и выведите -е значение этой последовательности, где оно может быть либо 0-индексированным, либо 1-индексированным.
- Возьмите вход и выведите первый или значений этой последовательности.
- Вывести значения из последовательности бесконечно.
Конечно, любой разумный формат вывода может быть использован. Может быть в виде строк / целых чисел / десятичных дробей / и т. Д .; может быть как (бесконечный) список / массив / поток / и т.д .; может быть выведен с пробелом / запятой / переводом строки / другим разделителем в STDOUT; и т. д. и т. д. Пожалуйста, укажите, какой I / O и вариант вы используете в своем ответе!
Основные правила:
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Не позволяйте языкам кода-гольфа отговаривать вас от публикации ответов на языках, не относящихся к кодексу. Попробуйте придумать как можно более короткий ответ для «любого» языка программирования. - Стандартные правила применяются к вашему ответу с правилами ввода / вывода по умолчанию , поэтому вам разрешено использовать STDIN / STDOUT, функции / метод с правильными параметрами и типом возврата, полные программы. Ваш звонок.
- По умолчанию лазейки запрещены.
- Если возможно, добавьте ссылку с тестом для вашего кода (например, TIO ).
- Кроме того, добавление объяснения для вашего ответа настоятельно рекомендуется.
Вот несколько более крупных тестовых случаев, если вы выберете вариант 1:
n 0-indexed output 1-indexed output
500 5624 5625
750 4526 4531
1000 3432 3433
9329 11111 11112
9330 666666 11111
9331 666665 666666
10000 663632 663633
100000 6131232 6131233
Ответы:
Желе , 5 байт
Попробуйте онлайн!
1-индексированное n-е значение.
источник
Perl 6 ,
2423 байта-1 байт благодаря nwellnhof
Попробуйте онлайн!
Выводит последовательность, бесконечно разделенную пробелами / символами новой строки. Или, для еще нескольких байтов у нас может быть ленивый бесконечный список, в который мы можем индексировать.
Perl 6 , 27 байт
Попробуйте онлайн!
Объяснение:
источник
Python 2 ,
393834 байтаПопробуйте онлайн!
Выходы 1-индексированные числа
источник
R , 43 байта
Попробуйте онлайн!
Печатает последовательность бесконечно
источник
6 5 4 3 2 166 65 64...
Баш, 31 байт
TIO
обновление по комментариям, n-ое значение 1-проиндексировано, + инструменты GNU + perl, 64 байта, 7 байтов сохранено благодаря @manatwork
64 байта
источник
bc<<<obase=6\;$1
. Но если вы переключитесь наdc
, вам некуда убежатьdc<<<6o$1p
.dc<<<6o$1p|perl -pe '1while s/(.)0/($1-1).6/e;s/0//'|tr 1-6 654321
MATL , 11 байт
Выводит значения бесконечно.
Попробуйте онлайн!
объяснение
источник
Haskell,
3834 байтаБесконечный список чисел:
Попробуйте онлайн!
Два более ранних решения, которые дают бесконечные списки строк, каждое из которых использует 38 байтов:
Попробуйте онлайн!
Попробуйте онлайн!
источник
replicate
.JavaScript (ES6), 26 байт
Попробуйте онлайн!
источник
Haskell , 28 байт
Попробуйте онлайн!
Создает бесконечный список чисел
l
. Используя<$>
и<*>
обрезает байт:29 байт
Попробуйте онлайн!
Этот подход аналогичен ответу фиксированной входной строки "654321" на выходной вопрос Haskell и пропуску пустой строки путем изменения места добавления.
30 байтов
Попробуйте онлайн!
источник
0
(или""
) короче , но не нашел дешевого способа не получить его в результате ...05AB1E , 10 байтов
Выводит последовательность бесконечно.
Попробуйте онлайн!
объяснение
источник
¸
в начале создает список, содержащий пустую строку. И на 2 байта короче, чем решение, которое я использовал для генерации тестовых случаев, поэтому, конечно, +1 от меня. :)Perl 5,
4037 байт-3 байта благодаря @Xcali
37 байт
40 байт
источник
Java (JDK) , 48 байт
Попробуйте онлайн!
Это возвращает 1-й индексированный n- й элемент.
Кажется, рекурсия побеждает итеративную лямбду.
Итерационная версия, 49 байт
Попробуйте онлайн!
источник
Брахилог ,
1311 байтСпасибо Fatalize за 2 байта
Выходы на неопределенный срок. Попробуйте онлайн!
объяснение
источник
6~d{⟧₁∋}ᵐẉ⊥
. Вы в основном заканчиваете свою программу с «ложью», которая заставит ее печатать все решения.C # (.NET Core) , 38 байт
Попробуйте онлайн!
Выводит n-е значение (на основе 1).
источник
Japt, 14 байт
Должно быть более короткое решение, использующее методы функций и / или декартово произведение, но (на данный момент?) Лучшее, чем я могу управлять, - это порт JS-решения Арнаулда, так что не забудьте также оповестить его.
Попробуй или проверь условия
0-1000
источник
Wolfram Language (Mathematica) ,
8878 байтПопробуйте онлайн!
сэкономили 4 + 6 байт благодаря @IanMiller
Список индексируется 1, выводит n-ное число.
источник
Mathematica, 56 байт
источник
Пип
-l
, 16 байтВыводит последовательность бесконечно. Попробуйте онлайн!
объяснение
В
-l
флаге означает , что списки печатаются с каждым элементом по своей линии; если элемент сам является списком, его элементы объединяются без разделителя. Например, список[1 [2 3] [4 [5 6]]]
будет напечатан какС этим прояснилось:
После первой итерации цикла
x
выглядит так[[6;6];[6;5];[6;4];...;[1;1]]
: после второй итерации[[[6;6];6];[[6;6];5];[[6;6];4];...;[[1;1];1]]
; и так далее. Нам не нужно беспокоиться о выравнивании списков, потому что это-l
эффективно для нас.источник
Древесный уголь , 18 байт
Попробуйте онлайн! Ссылка на подробную версию кода. 1-индексироваться. Объяснение:
вход
n
Повторите, пока не
n
станет ноль.Уменьшите
-n
по модулю6
, затем увеличьте результат и выведите справа налево.Уменьшение
n
и целое число делят его на6
.источник
Сетчатка 0.8.2 , 36 байт
Попробуйте онлайн! Ссылка включает в себя тестовые случаи. 1-индексироваться. Объяснение:
Преобразовать в одинарный. (Retina 1 сохранит 2 байта здесь.)
Преобразование в биективное основание 6 повторяется divmod. Обратите внимание, что использование
+
означает, что извлеченная цифра всегда представляет собой число от 1 до 6 вместо 0 до 5 для обычного преобразования в основание 6. ((_{6})*
быстрее, но стоит извлечь байты частное.)Переставьте цифры так, чтобы 6-е были первыми, а 1-е - последними. (Нет 7 или 0, но это позволяет мне использовать
d
ярлык.источник
Cubix , 22 байта
Это выведет последовательность на неопределенный срок. Общая идея заключается в том, что он имеет базовый номер, к которому добавляется 6 - 1. Для каждого добавления результат выводится умноженным на 10, который помещается в конец стека для последующего использования в последовательности. Затем база выскочила и началась следующая база.
Попробуйте онлайн!
Смотреть это работает
источник
C # (.NET Core) , бесконечная печать,
181 18088 байт.К сожалению, он замораживает repl.it вместо правильного вывода в бесконечной версии, как написано (я считаю, что это ошибка в repl.it, поскольку он не выводится так, как программа зацикливается, как должно), поэтому любой, кто надеется протестировать, нуждается в компьютер. Если вы добавите чтение в начало цикла, оно будет работать и в repl.it.
Выходы на консоль, очевидно.
В любой конечной системе код, скорее всего, в конечном итоге завершится с ошибкой нехватки памяти.Переработан код для использования лямбды @dana.
Попробуйте онлайн!
источник
Forth (gforth) , 63 байта
Попробуйте онлайн!
0-индексированные выходы n-го значения
объяснение
Если N меньше 6, выведите абсолютное значение N - 6. В противном случае получите частное и остаток от деления N на 6. Вызовите функцию рекурсивно для частного, а затем вызовите ее для остатка.
Код Объяснение
источник
APL (NARS), 27 символов, 54 байта
traslate решение дана /codegolf//a/179980 в APL ... тест:
источник
C #, печатать с начала, ??? байтов
Благодарю @dana за лямбда-выражение.
Операция: Запустите с 0-м аргументом командной строки, равным целому числу, которое вы хотите считать. (Следует заметить, что
a[0]
это ссылка на массив аргументов командной строки, не упомянутый в противном случае, и я не знаю, как его посчитать.)источник