Odwróć swój kod, odwróć OEIS

12

Zadanie polega na napisaniu programu, który przyjmuje liczbę naturalną n i tworzy n ty ciąg sekwencji OEIS. Sekwencja ta powinna mieć identyfikator w postaci Anastępujących po niej 6 cyfr. Teraz, gdy weźmiesz kod źródłowy i odwrócisz kolejność bajtów, aby utworzyć nowy program, program ten powinien również implementować sekwencję OEIS. Nowa sekwencja powinna być oznaczona Anastępującymi po niej tymi samymi 6 cyframi, co poprzednio, ale w odwrotnej kolejności (łącznie z zerami wiodącymi).

Teraz, aby nie było trywialne, ani numer identyfikacyjny OEIS, ani twój program nie mogą być palindromami. To znaczy sekwencje i programy powinny być różne. Nie można wybrać sekwencji, dla której jej odwrócenie nie istnieje lub jest puste.

Dla każdej sekwencji możesz użyć indeksowania 0 lub 1. Nie muszą używać tego samego indeksowania. Ponieważ niektóre sekwencje OEIS mają ograniczoną domenę, musisz podać tylko prawidłowe liczby dla domeny sekwencji. Twoje wymagane zachowanie jest niezdefiniowane poza domeną (możesz wyprowadzać 0, zawieszać się, zamawiać pizzę itp.).

To jest więc odpowiedzi będą liczone w bajtach, przy czym mniej bajtów będzie lepszych.

Ad Hoc Garf Hunter
źródło
Czy początkowe zera są uwzględniane w odwracaniu numerów sekwencyjnych?
pppery 11.07.19
1
@pppery Muszą być, ponieważ numery OEIS mają dokładnie 6 cyfr. (to również wyraźnie mówi w pytaniu)
Jo King
Czy możemy traktować dane wejściowe (indeks) jako ciąg?
TFeld

Odpowiedzi:

4

Perl 6 , 55 bajtów (A055642 i A246550)

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

Wypróbuj online!

Jest to anonimowa cokolwiek lambda implementująca sekwencję OEIS A055642 (długość dziesiętnej reprezentacji n ) 0-indeksowanej.

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

Wypróbuj online!

Odwrotna jest sekwencja A246550 (uporządkowana lista xmi gdzie x jest liczbą pierwszą, a mi4 ) 1-indeksowana.

Większość tego wyzwania polegała na znalezieniu dobrej sekwencji z niezbyt skomplikowanym zwrotem.

Aktualizacja: Korzystając z odpowiedzi torcado , może to być 19 bajtów (A010851 i A158010)

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

Wypróbuj online!

Jo King
źródło
2

\ / \ /> , 15 14 bajtów ( A010851 i A158010 )

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

efektywnie cn, wyjście 12

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

skutecznie j:"Ā"*1-*n, n (256n-1)

dzięki przyjacielowi za znalezienie niewiarygodnie prostych sekwencji!

torcado
źródło
1

Haskell, 47 bajtów ( A000010 i A010000 )

Obie sekwencje są stosunkowo proste.

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

Wypróbuj online!

p n = funkcja Eulera dla n (A000010) (indeks 1)

Wywrócony:

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

Wypróbuj online!

p n = 1, jeśli n = 0, w przeciwnym razie n ^ 2 + 2

Byłoby interesujące zobaczyć odpowiedź, która nie używa komentarzy ...

Leo Tenenbaum
źródło
1

Python 2 , 59 bajtów (A030000 i A000030)

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

Wypróbuj online!

Definiuje funkcję fzwracającą n-ty warunek A030000 (najmniejsza nieujemna liczbak tak, że rozwinięcie dziesiętne z 2)k zawiera ciąg n), 0-indeksowane

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

Wypróbuj online!

Anonimowa funkcja zwracająca n-ty termin z A000030 (początkowa cyfran), 0-indeksowane


Krótsza wersja, która pobiera ciągi jako dane wejściowe (dla obu sekwencji), i obie nadal indeksowane 0:

Python 2 , 56 bajtów

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

Wypróbuj online!

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

Wypróbuj online!

TFeld
źródło