Kodunuzu ters çevirin, OEIS'i ters çevirin


12

Burada görev, bir doğal sayı alan bir program yazmaktır n ve üreten bir OEIS dizisinin inci dönem. Bu sekans, ardından 6 basamaklı bir tanımlayıcıya sahip olmalıdır . Şimdi kaynak kodunuzu alıp yeni bir program üretmek için bayt sırasını ters çevirdiğinizde, bu programın bir OEIS dizisi de uygulaması gerekir. Yeni sekans , sonuncusu ile aynı 6 basamağın ardından ters sırada (baştaki sıfırlar dahil) tanımlanmalıdır.nAA

Artık olayların önemsiz olmasını önlemek için ne OEIS tanımlayıcı numarası ne de programınız palindrom olamaz. Yani diziler ve programlar farklı olmalıdır. Tersi olmayan veya boş olan bir dizi seçemezsiniz.

Dizilerinizin her biri için 0 veya 1 dizinlemeyi kullanmayı seçebilirsiniz. Aynı indekslemeyi kullanmaları gerekmez. Bazı OEIS dizilerinin sınırlı bir etki alanı olduğundan, dizinin etki alanı için yalnızca doğru sayıları çıkarmanız gerekir. Gerekli davranışınız alan adının dışında tanımlanmamıştır (çıktı 0, çökme, pizza siparişi vb.).

Bu bu nedenle cevaplar daha az bayt daha iyi olacak şekilde bayt cinsinden puanlanır.


Baştaki sıfırlar sıra numarası tersine çevriliyor mu?
pppery

1
@pppery Öyle olmalı, çünkü OEIS sayıları tam olarak 6 basamaklıdır. (soruda açıkça
Jo King

Girdi (dizin) bir dize olarak alınabilir mi?
TFeld

Yanıtlar:



4

Perl 6 , 55 bayt (A055642 ve A246550)

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

Çevrimiçi deneyin!

Bu, OEIS sekansı A055642'yi ( n ondalık temsilinin uzunluğu ) 0 ile indekslenen ne olursa olsun anonimdir .

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

Çevrimiçi deneyin!

Ters dizisidir A246550 (sıralı listesi xe burada x asal ve e4 ) 1-endekslendi.

Bu zorluğun çoğu, çok karmaşık olmayan bir tersi olan iyi bir dizi bulmaktı.

Güncelleme: Torkado cevabını kullanarak , bu 19 bayt olabilir (A010851 ve A158010)

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

Çevrimiçi deneyin!


2

\ / \ /> , 15 14 bayt ( A010851 ve A158010 )

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

etkili cn, çıktı 12

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

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

inanılmaz basit dizileri bulmak için bir arkadaşına teşekkürler!


1

Haskell, 47 bayt ( A000010 ve A010000 )

Her iki sekans nispeten basittir.

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

Çevrimiçi deneyin!

p n = n'nin Euler totient fonksiyonu (A000010) (1 dizinli)

ters:

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

Çevrimiçi deneyin!

p n = 1 ise n = 0, aksi takdirde n ^ 2 + 2

Yorumları kullanmayan bir cevap görmek ilginç olurdu ...


1

Python 2 , 59 bayt (A030000 ve A000030)

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

Çevrimiçi deneyin!

A030000'ünf n. Terimini döndüren bir işlev tanımlar (en küçük negatif olmayan sayı k , 2k ondalık genişlemesi n dizesini içerirn ), 0 dizinli

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

Çevrimiçi deneyin!

A000030'un n. Terimini döndüren anonim bir işlev ( n'nin ilk basamağın , 0 dizinli


Dizeleri girdi olarak alan (her iki sekans için de) ve her ikisi de 0 dizinli olan daha kısa sürüm:

Python 2 , 56 bayt

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

Çevrimiçi deneyin!

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

Çevrimiçi deneyin!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.