Рассмотрим следующую последовательность:
1, 0, 1, 2, 4, 1, 6, 8, 0, 1, 2, 4, 6, 8, 1, 0, 2, 4, 6, 8, 1, 0, 2, 4, 6, 8, 0, 1, ...
Четные цифры начинаются с 0 и группируются в серии увеличивающейся длины. Они располагаются циклически, что означает, что они сортируются в порядке возрастания до достижения 8 , а затем циклически возвращаются из 0 . 1 разделяет серии четных цифр и также запускает последовательность. Давайте представим, как формируется эта последовательность:
1, 0, 1, 2, 4, 1, 6, 8, 0, 1, 2, 4, 6, 8, 1, 0, 2, 4, 6, 8, 1, ...
- ---- ------- ---------- -------------
run length: 1 2 3 4 5 ...
position of 1: X X X X X X ...
even sequence: 0, 2, 4, 6, 8, 0, 2, 4, 6, 8, 0, 2, 4, 6, 8 ...
Приемлемые методы ввода и вывода:
Получите целое число N в качестве входных данных и выведите N- й член этой последовательности.
Получите целое число N в качестве входных данных и выведите первые N членов этой последовательности.
Печатайте последовательность бесконечно.
Вы можете выбрать 0 или 1-индексирование для первых двух методов.
Вы можете соревноваться на любом языке программирования , используя стандартные методы ввода и вывода . Стандартные лазейки запрещены. Это код-гольф , поэтому выигрывает самый короткий код на каждом языке.
Ответы:
Haskell ,
5046 байтовПопробуйте онлайн!
1#cycle[0,2..8]
возвращает последовательность в виде бесконечного списка.-4 байта благодаря Орджану Йохансену!
источник
#
числа. Попробуйте онлайн!Желе , 10 байт
Возвращает первые n элементов последовательности.
Попробуйте онлайн!
Как это устроено
источник
Unhalve
... Разве это не простоDouble
?H
это сократить вдвое , такḤ
это unhalve .ÆA
это арккозин , так жеÆẠ
как и арккозин .Шелуха ,
121110 байтПопробуйте онлайн!
Печатает последовательность бесконечно.
В качестве альтернативы:
Попробуйте онлайн!
объяснение
Для альтернативного решения:
Мы также могли бы это сделать
...ΘCN...
, потомуΘ
что «добавляет элемент по умолчанию», который добавляет ноль для списков целых чисел и пустой список для списков списков.источник
Python 3 , 52 байта
Принимает индекс на основе 1 и возвращает True или целое число с плавающей точкой .
Попробуйте онлайн!
источник
Python 2 , 51 байт
Печатает всю последовательность.
Попробуйте онлайн!
источник
APL, 25 байт
Возвращает n-й член.
объяснение
источник
APL (Dyalog Unicode) ,
525956 байтПопробуйте онлайн!
Это tradfn ( трады itional х unctio п ) принимает один аргумент
k
и возвращают первыеk
элементы последовательности.Спасибо @GalenIvanov за указание на ошибку в функции. Спасибо @ Adám за 3 байта.
Как это устроено:
Ниже приведены
Dfn
( д Прям ая ф unctio п ) и подразумеваемое функцию , которая также решить проблему, и любезно предоставленный @ AdaM.{⍵⍴1,∊1,⍨¨j⍴¨(+\¯1+j←⍳⍵)⌽¨⊂0,2×⍳4}
попробуйте онлайн!⊢⍴1,∘∊1,⍨¨⍳⍴¨(⊂0,2×⍳4)⌽⍨¨(+\¯1+⍳)
попробуйте онлайн!источник
JavaScript (ES6),
625452 байтаВозвращает N- й член последовательности, проиндексированный 0.
демонстрация
Показать фрагмент кода
источник
C (gcc), 84 байта
Попробуйте онлайн!
Функция (
f()
), которая печатает последовательность бесконечно, разделенных пробелами.i
длина текущего четного прогонаj
индекс в текущем четном прогоне(2*j+++i*i-i)%10
дает правильное четное число с учетом i и j (и приращений j), эквивалентное ((j + Tr (i))% 5) * 2, где Tr (x) - это x-ое треугольное число (которое является числом четного числа, которые были напечатаны до текущего запуска;источник
Java 8, 96 байт
Печатает бесконечно каждый номер на новой строке.
Объяснение:
Попробуй это здесь.
источник
Пакетная, 85 байт
Выводит N-й член последовательности. Работает путем расчета следующего треугольного числа.
источник
Perl 5 , 44 байта
Попробуйте онлайн!
Бесконечный вывод
источник
{...;redo}
вместоdo{...}while 1
J ,
464240 байт-6 байт благодаря Коул
Выводит первые N членов этой последовательности.
Как это устроено:
10|[:+:i.
- генерирует список длиной N 0 2 4 6 8 0 2 4 ... Он просто берет mod 10 удвоенных элементов списка целых чисел, начиная с 0.[:;[:#:&.>2^i.
- генерирует битовую маску для вырезания списка выше.(1 означает начало): 1 1 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 ... Он находит 2 в степени последовательных неотрицательных целых чисел, преобразует их в двоичные, выравнивает list и занимает только первые N элементов, так что длина обоих списков одинакова.
;@(1,&.><;.1)
- разбивает (режет) список четных цифр на подсписки в соответствии с картой единиц и нулей, добавляет подсписок к 1 и, наконец, выравнивает результирующий список]{.
- берет только первые N предметов, избавляясь от дополнительных чисел в списке за счет добавленных 1с.Попробуйте онлайн!
источник
{.({.[:;[:#:&.>2^i.);@(1,&.><;.1)(10|2*i.)
. Изменения, которые я сделал, заключались в использовании крюков и рефакторинга правого зуба вилки, чтобы воспользоваться преимуществами работы вилок. Мне нравится2^i.
трюк. Я сейчас пытаюсь работать на левом зубце вилки.(10|2*i.)
->10|2*i.
Common Lisp, 74 байта
Попробуйте онлайн!
Печатает последовательность бесконечно.
источник
Perl 5, 35 байт
попробуйте это онлайн
источник
Желе , 17 байт
Попробуйте онлайн!
источник
Протон , 55 байт
Попробуйте онлайн!
Печатает последовательность бесконечно
источник
i=0 j=-2while1{
...-2while
похож на Python иwhile1
потому, что я сделал идентификаторы, которые не могут быть ключевыми словами, за которыми следует числоJava (OpenJDK 8) , 107 байт
Попробуйте онлайн!
источник
Mathematica, 68 байт
Возвращает N-й член
Попробуйте онлайн!
источник
Wolfram Language (Mathematica) , 61 байт
Попробуйте онлайн!
источник
JavaScript, 45 байт
1 проиндексировано:
0 проиндексировано:
Показать фрагмент кода
источник
Рубин ,
4846 байтПопробуйте онлайн!
Печатайте последовательность бесконечно
источник
Баш, 42 байта
или 34, если действует
попробуйте это онлайн
источник