Поменять последовательность


9

Ваша задача - написать некоторый код, который выводит последовательность OEIS и содержит имя последовательности в коде ( A______). Достаточно просто, верно? Ну, вот в чем загвоздка, ваш код должен также выводить вторую отдельную последовательность, когда имя последовательности в коде изменяется на имя второй последовательности.

Ввод, вывод

Ваш код может быть функцией или полной программой, которая принимает n с помощью стандартного метода ввода и выводит n- й член последовательности, как указано в указанном индексе на странице OEIS.

Вы должны поддерживать все значения, указанные в файлах OEIS b для этой последовательности, любое число, отсутствующее в файлах b, не должно поддерживаться.

счет

Это , Ваша оценка будет равна количеству байтов в вашем коде, а меньшее количество байтов будет лучше.

пример

Вот пример в Haskell, который работает для A000217 и A000290.

f x|last"A000217"=='0'=x^2|1>0=sum[1..x]

Попробуйте онлайн!


Чтобы уточнить: Ваш код должен работать для двух последовательностей, где указание имени последовательности в этой части кода будет выводить номер этой последовательности?
HyperNeutrino

@HyperNeutrino Да. Когда имя последовательности подставляется, оно должно изменить функцию программы на вторую последовательность.
Ad Hoc

1
У последовательностей в коде должны быть лидирующие нули.
pppery

@ppperry Да, это должно быть.
Ad Hoc

1
Является ли Aтребуется?
Okx

Ответы:


8

JavaScript (ES6), 16 15 байт

n=>4&~0xA000004

Работает с A000004 (все 0 с) и A010709 (все 4 с).

Предыдущее 17-байтовое решение работает с A010850 до A010859 включительно:

n=>~-0xA010850%36

Предыдущее 25-байтовое решение работает с A010850 до A010871 включительно:

n=>"A010850".slice(5)-39

Это просто хвастовство (я не знаю OEIS достаточно хорошо, чтобы понять, насколько это умно: P)
TheLethalCoder

Странно - два ответа начинались с 25 байтов и оба играли в гольф до 17 байтов в минуту
pppery

@ppperry Хех, но я мог бы перенести ваш ответ, и это будет только 15 байтов ...
Нил

JS связана с желе ?! Очень красиво сделано
Shaggy

@ Shaggy Нету; новый короткий ответ желе был опубликован.
pppery



3

cQuents , 16 байтов

=A000007//5#|A:0

Попробуйте онлайн! , A000007 ,1,0,0,0,0...

=A000004//5#|A:0

Попробуйте онлайн! , A000004 ,0,0,0,0,0...

объяснение

                    Implicit input A
=A000007            First item in the sequence equals A * 7
        //5                                                 intdiv 5 = 1
           #|A      n equals A
              :     Mode : (sequence): output nth item (1-based)
               0    Rest of the sequence is 0

                    Implicit input A
=A000004            First item in the sequence equals A * 4
        //5                                                 intdiv 5 = 0
           #|A      n equals A
              :     Mode : (sequence): output nth item (1-based)
               0    Rest of the sequence is 0

Спасибо Конору О'Брайену за 4//5 = 0и 7//5 = 1.

Если бы спецификация была более гибкой, это было бы O7A$и O4A$.



2

постоянный ток , 13 байт

Редактировать: Очевидно, OEIS перечисляет полномочия от 0th до 30th - я только что провел поиск по этим последовательностям, и оказалось, что оригинальное 13байтовое решение - самое лучшее в гольфе. Но я нашел другое решение для 1большего количества байтов, которое работает для 9последовательностей.

Решение для A000012 (последовательность констант 1):

?A000012 4%^p

Попробуйте онлайн!

Решение для A001477 (неотрицательные целые числа):

?A001477 4%^p

Попробуйте онлайн!

Решение для A000290 (последовательность идеальных квадратов):

?A000290 4%^p

Попробуйте онлайн!

Ungolfed / Пояснение

Эти решения используют тот факт, что dcинтерпретирует Aкак 10, так A001477становится ценностью 10001477. Далее он использует, что последовательности n^0, n^1и n^2которые совпадают с 10000012 % 4 == 0, 10001477 % 4 == 1и 10000290 % 4 == 2.

Так что эти последовательности есть xyz(n) = n ^ (xyz % 4).

Command          Description          Example (3) 
?              # Push the input       [3]
 A000290       # Push sequence name   [3,10000290]
         4%    # Top %= 4             [3,2]
           ^   # Pop x,y & push y^x   [9]
            p  # Print the top        [9]

14-байтовое решение для 9 последовательностей

Идея все та же, на этот раз нам нужно сделать a % 97, чтобы получить правильную мощность - она ​​работает для последовательностей A010801 , A010802 , A010803 , A010804 , A010805 , A010806 , A010807 , A010808 и A010809 (это последовательности n^13, .. ., n^21).

Вот первый:

?A010801 97%^p

Попробуйте онлайн!


1
+1 за поддержку более двух последовательностей!
Нил

1

Python 2, 25 17 байт

print'A000012'[5]

Работает для A000004 и A000012. (ввод игнорируется, потому что все последовательности являются постоянными членами).


1

Befunge 98, 10 байт

#A000012$q

Также работает для A000004. Вывод по коду выхода.


1

Желе , 17 байт

“A000578”OS%⁵ạ6*@

Попробуйте онлайн!

“A000578”OS%⁵ạ6*@  Main link
“A000578”          String
         O         Codepoints
          S        Sum (364 for A000290, 373 for A000578)
           %⁵      Modulo 10 (4 for A000290, 3 for A000578)
             ạ6    Absolute Difference with 6 (2 for A000290, 3 for A000578)
               *@  [left argument] ** [result of last link (right argument)]

Также работает с A000290


Хорошая работа с использованием непостоянных последовательностей.
AdmBorkBork

1

PowerShell , 23 байта

+(0xA000012-eq160mb+18)

Попробуйте онлайн!

Использует A000012 (последовательность всех единиц) и A000004 (последовательность всех нулей).

Использует несколько изящных трюков. Мы используем 0xв качестве шестнадцатеричного оператора на последовательность, которая дает нам 167772178. Это сравнивается, чтобы увидеть, является ли -eqэто 160mb+18использование mbоператора ( 160mbесть 167772160). Этот логический результат затем преобразуется в тип int +для вывода правильного 1или 0. Обратите внимание, что любая последовательность в коде, отличная от A000012, приведет 0к выводу.


1

Нейм , 10 9 байт

A000012ᛄ>

Объяснение:

A            Push 42
 000012      Push 4
 or
 A007395     Push 7395
        ᛄ     Modulo 2
         >    Increment

A000012 (все) и A007395 (все по два)

Функция, которая принимает входные данные в верхней части стека и оставляет выходные данные в верхней части стека.

Попробуйте онлайн!


0

Gaia , 9 байт

A000012₉/

Работает с A000012 и A000004 .

Попробуйте A000012!

Попробуйте A000004!

объяснение

A          Undefined (ignored)
 000012    Push 12
       ₉   Push 9
        /  Integer division, results in 1


A          Undefined (ignored)
 000004    Push 4
       ₉   Push 9
        /  Integer division, results in 0

Почему все продолжают публиковать A00004 и A00012?
pppery

@ppperry A000004 - нулевая последовательность, а A000012 - единичная последовательность. Просто наполовину разделите числа на 9 и выведите результат навсегда.
Тост инженера






0

Шелуха , 20 байт

Эта возвращает несколько более интересных последовательностей, опять же решения 1-индексированы.

Это работает для A000040 (простые числа):

!!i→"A000040"e:0İfİp

Попробуйте онлайн!

И этот для A000045 (числа Фибоначчи):

!!i→"A000045"e:0İfİp

Попробуйте онлайн!

объяснение

Это использует тот факт, что последние цифры имен последовательностей имеют другую четность:

                      -- implicit input N
             e        -- construct a list with:
              :0İf    --   list of Fibonacci numbers (prepend 0)
                  İp  --   list of the prime numbers
  i→"Axxxxx?"         -- get the last character and convert to number,
 !                    -- use it as modular index (0 -> primes, 5 -> Fibonacci)
!                     -- get the value at the Nth index

0

AHK , 40 байт

a:=SubStr("A000004",6)//9
Loop
Send %a%,

Вывод: 0,0,0,0,0,0,0,0,0,0,0,0,...

a:=SubStr("A000012",6)//9
Loop
Send %a%,

Вывод: 1,1,1,1,1,1,1,1,1,1,1,1,...

Возможно, это не самый короткий код, но я уверен, что это самая короткая пара последовательностей, которую мы можем найти. A000004 является нулевой последовательностью, а A000012 является последовательностью единиц. Просто наполовину разделите числа на 9 и выведите результат навсегда.


0

QBIC , 28 байт

p=!_s@A000035`,-1|!?:%2+5-p

Это переключает между последовательностями A000034 (1, 2, 1, 2, 1 ...) и A000035 (0, 1, 0, 1, 0, 1 ...)

объяснение

p=                  Set p to 
  !            !    A numeric representation of
   _s         |     a substring of
     @A000035`      our sequence code (either A0035 or A0034)
     ,-1            taking just one character from the right.
?:%2                PRINT <n> MOD 2 (gives us a either 0 or 1)
    +5-p            Plus 1 for seq A24 (5-4), or plus 0 for A35

0

Шелуха , 16 байт

Оба решения 1индексируются.

Это работает для A000351 (полномочия 5):

!¡*i!6"A000351"1

Попробуйте онлайн!

И этот для A000007 (полномочия 0):

!¡*i!6"A000007"1

Попробуйте онлайн!

объяснение

Используется, чтобы имена A000351 , A000007 содержали правильную цифру D в позиции 6, так что последовательность D^0,D^1,D^2,...:

                  -- implicit input N
   i!6"AxxxxDx"   -- get the right digit D and convert to number,
 ¡*            1  -- iterate (D*) infinitely beginning with 1,
!                 -- extract the value at Nth position

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.