Обратный код, обратный OEIS

12

Задача здесь состоит в том, чтобы написать программу, которая принимает натуральное число и выдает й член последовательности OEIS. Эта последовательность должна иметь идентификатор в форме, за которой следуют 6 цифр. Теперь, когда вы берете исходный код и меняете порядок его байтов для создания новой программы, эта программа также должна реализовывать последовательность OEIS. Новая последовательность должна быть обозначена последующими теми же 6 цифрами, что и в прошлый раз, но в обратном порядке (включая начальные нули).nnAA

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

Для каждой из ваших последовательностей вы можете выбрать индексирование 0 или 1. Они не должны использовать одну и ту же индексацию. Поскольку некоторые последовательности OEIS имеют ограниченный домен, вам нужно только вывести правильные числа для домена последовательности. Требуемое поведение не определено за пределами домена (вы можете выводить данные 0, вылетать, заказывать пиццу и т. Д.).

Это поэтому ответы будут оцениваться в байтах, причем меньше байтов будет лучше.

Специальный охотник за гарфами
источник
Включаются ли ведущие нули в реверсирование порядкового номера?
pppery
1
@pppery Они должны быть, так как номера OEIS имеют ровно 6 цифр. (это также прямо говорит в вопросе)
Джо Кинг
Можем ли мы взять вход (индекс) в виде строки?
TFeld

Ответы:

4

Perl 6 , 55 байтов (A055642 и A246550)

+*.comb#}]1-_$[)4+_$^**X]_$^[)*..2,emirp-si&(perg(tros{

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

N

{sort(grep(&is-prime,2..*)[^$_]X**^$_+4)[$_-1]}#bmoc.*+

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

ИксеИксе4

Большая часть этой задачи заключалась в поиске хорошей последовательности с не слишком сложным реверсом.

Обновление: используя ответ torcado , это может быть 19 байтов (A010851 и A158010)

{256*$_**2-$_}#{21}

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

Джо Кинг
источник
2

\ / \ /> , 15 14 байт ( A010851 и A158010 )

cn;n*-1*"Ā":j

эффективно cn, вывод 12

j:"Ā"*1-*n;nc

эффективно j:"Ā"*1-*n, n (256n-1)

спасибо другу за то, что он нашел невероятно простые последовательности!

torcado
источник
1

Haskell, 47 байтов ( A000010 и A010000 )

Обе последовательности относительно просты.

p n=sum[1|x<-[1..n],gcd x n<2]--2+n*n=n p;1=0 p

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

p n = общая функция Эйлера n (A000010) (1-индексированная)

Перевернутый:

p 0=1;p n=n*n+2--]2<n x dcg,]n..1[-<x|1[mus=n p

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

p n = 1, если n = 0, иначе n ^ 2 + 2

Было бы интересно увидеть ответ без комментариев ...

Лео Тененбаум
источник
1

Python 2 , 59 байт (A030000 и A000030)

f=lambda n,k=0:k if`n`in`2**k`else f(n,k+1)#]0[`n`:n adbmal

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

Определяет функцию f, возвращающую n-й член A030000 (наименьшее неотрицательное числоК такой, что десятичное расширение 2К содержит строку N), 0 проиндексирован

lambda n:`n`[0]#)1+k,n(f esle`k**2`ni`n`fi k:0=k,n adbmal=f

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

Анонимная функция, возвращающая n-й член A000030 (начальная цифраN), 0 проиндексирован


Более короткая версия, которая принимает строки в качестве входных данных (для обеих последовательностей), и обе по-прежнему с 0 индексами:

Python 2 , 56 байт

f=lambda n,k=0:`k`*(n in`2**k`)or f(n,k+1)#]0[n:n adbmal

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

lambda n:n[0]#)1+k,n(f ro)`k**2`ni n(*`k`:0=k,n adbmal=f

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

TFeld
источник