Soyguncular: Gizli OEIS Substring


23

Bu bir Polis ve Soyguncular mücadelesidir. Bu soyguncunun ipliği. Polisin parçacığı burada .

Polisler OEIS'den herhangi bir dizi seçecek ve bu diziden ilk tam sayıyı basan bir program p yazacaktır . Ayrıca bazı s dizelerini de bulacaklar . Eğer eklerseniz ler içine bir yere p , bu program dizisinden ikinci tamsayı yazdırmak gerekir. If you s + s aynı konuma p , bu program dizisinin üçüncü tamsayı yazdırmak gerekir. Aynı konumdaki s + s + s , dördüncü vb. İşte bir örnek:

Python 3, dizi A000027

print(1)

Gizli dize iki bayttır .

Dize, +1program print(1+1)A000027'deki ikinci tamsayıyı yazacağı için, program print(1+1+1)üçüncü tamsayıyı vs. yazacaktır .

Polis dizisi, orijinal program ortaya gerekir p ve gizli dizi uzunluğu s . Soyguncular , bu uzunluğa kadar herhangi bir dize ve diziyi oluşturmak için eklemek için konum bularak bir gönderimde bulunur . Dize geçerli bir çatlak olması için öngörülen çözüme uyması gerekmez, ayrıca yerleştirildiği konum da değildir.

Polislerin cevaplarından birini kırdıysanız, çözümünüzü (gizli dize ve konum açıkken) ve cevabın bağlantısını ekleyin. Öyleyse polislere yorum yapın, burada çatlaklarınıza bir link verin.

kurallar

  • Çözümünüz dizideki herhangi bir numara için veya en azından bellek kısıtlamaları, tamsayı / yığın taşması vb.

  • Kazanan soyguncu, en çok başvuru yapanları, kullanıcı ise ilk önce bu sayıdaki çatlaklara ulaşan hırsızdır.

  • Kazanan polis kısa dize ile polis s kırık değildir. Tiebreaker en kısa p . Uncracked gönderim yoksa, uzun süren ödüller için çözülmüş çözümü olan polis.

  • Güvenli ilan edilmesi için, çözümünüz 1 hafta boyunca açılmamış kalmalı ve ardından gizli dizenin (ve onu yerleştireceğiniz yerin) ortaya çıkarılması gerekir.

  • s yuvalanmış olmayabilir, uçtan uca birleştirilmiş olmalıdır. Örneğin, s idi 10, her yineleme gider 10, 1010, 101010, 10101010...yerine10, 1100, 111000, 11110000...

  • Tüm şifreleme çözümleri (örneğin, alt dizenin karmasını kontrol etmek) yasaklanmıştır.

  • Eğer s herhangi ASCII olmayan karakterler içeriyor, ayrıca kodlama kullanılıyor belirtmelidir.

Yanıtlar:



10

Beyin Flak , A000984 tarafından Nitrodon

({({}<>({}))<>}<>){({}<>)<>}<>

Bu sadece 30 byte, Nitrodon'un aklında ne olduğundan emin değil.

Çevrimiçi deneyin!

açıklama

Birçok şey denedim ama işte işe yaradı. A000984'ün terimleri Pascal üçgeninin merkezi unsurlarıdır.

Central elements

Şimdi üstlerindeki köşegenleri ekleyerek onları alabileceğimi düşündüm:

Örneğin:

1+3+6+10=20

Central sums

Nitrodon'un programındaki son eylem, bunların iyi bir aday gibi göründüğü her şeyi özetlemek olduğundan (daha çok bir sürü şey denedim ama bu işe yaradı).

Bu yüzden bir kısmi toplam alan ve diğerini üreten bir program istiyoruz. Neyse ki bunlardan birinden diğerine almak için güzel bir yol var. Her satır bir sonraki satırın deltalarıdır. Olduğu O n üst üste inci terimi arasındaki farktır n th ve n1 sonraki satırda inci açısından.

Next row formula

Tek sorun, istediğimiz satırı hesaplamak için son satırdan yeterince alamayacağımızdır. Bir satırımız varsa her satır bir taneden daha uzun olduğu için bu yöntemle bir sonraki satırın son üyesini alamayız. Ancak burada başka bir numaramız var, her sıranın son üyesi o sıranın önceki tüm üyelerine eşittir!

1+3+6=10

Last member formula

Ve eğer Beyin Flak'a aşina iseniz, size yapması çok kolay olacak bir şey olarak size yapışması gerekir.

Şimdi kod için:

Başlamak için, her yeni üyenin iki bitişik eski üyenin toplamı olduğu bir sonraki satır hesaplamasını yaparız. Bu yapılabilir:

{({}<>({}))<>}<>

Hangi temelde bir elementin üzerinde hareket eder ve zaten üzerinde olanları ekler (silmeden). Ancak bu her şeyi tersine çevirir, böylece bir dahaki sefere bir satır alırsak geri koymamız gerekir.

{({}<>({}))<>}<>{({}<>)<>}<>

Şimdi satırın son üyesini hesaplamamız gerekiyor. Daha önce dediğim gibi bu çok kolay. Satırın tüm unsurları üzerinde bir döngü oluşturduğumuz için, bu toplamı alıp itebiliriz. İkinci döngüden önce iteriz, böylece dibinde kalır.

({({}<>({}))<>}<>){({}<>)<>}<>

Ve bu kadar.


1
Aklımda olandan daha iyi. Açıklamanızda bir düzeltme olsa da: bir köşeden diğerine geçmek için yeni bir sayıya (eski köşegenin kümülatif toplamlarını hesapla) eski bir sayı ekliyorsunuz, iki eski sayı eklemiyorsunuz.
Nitrodon

@ Nitrodon Açıklama sabit. Kendi kodumu okumuş olsaydım, bunun yanlış olduğunu görebilirdim.
Buğday Sihirbazı


6

Matl sekans A005206 göre Luis Mendo

Orijinal:

voOdoO

Çevrimiçi deneyin!

çatlak:

voOdoOdNq17L/k
      ^^^^^^^^

Ben bir MATL uzmanı değilim, fakat anladığım kadarıyla, orijinal voOdoOiki boş dizi ve [0]yığında bir dizi yaratıyor . Bu [0], dizinin ilk elemanı olarak parantezsiz yazdırılan şeydir. Çatlak / çözelti daha sonra aşağıdakileri yapar:

  • dbir öğeyi yığından çıkarır ve (1 veya bir boyut dizisi olduğunu varsayarsak) boş bir diziye dönüştürür. Bu boş diziler basılmaz, ancak yığın boyutuna katkıda bulunur
  • Nqyığının boyutunu sayar ve birini çıkarır. n+1Fonksiyonu değerlendirirken kullanılan terim (2'de başladığı dve yığına görünmez şeyler eklediği için her yinelemede bir artar )
  • 17L bu sabit Phi = (1+sqrt(5))/2
  • /kbu floor((n+1)/Phi), dizinin elemanlarını hesaplayan formüllerden hangisidir. Bu formül, a(n) = floor(sigma*(n+1)) where sigma = (sqrt(5)-1)/2kimliği kullanmamız dışında OEIS'te listelenmiştir.(sqrt(5)-1)/2 = 1/Phi

Ben bir MATL uzmanı değilim Pekala, bence bir oldunuz - :) Referans olarak, gizli dizgim\N17L/k& ( &kodun ortasında ve sonunda kullanılan iki farklı kullanımı unutmayın ), ancak çözümünüz daha basit ve daha zarif
Luis Mendo

5

Python 3 - A__

print(100+-1)

Çevrimiçi deneyin!

100 şişe bira, bir -1sonraki numarayı almak için 99vb. Ekleyin.


Beni 7 saniye geç. :) Ayrıca, kurallar demek herhangi bir dize bulma kadar o uzunlukta sadece yapabileceği şekilde -1yerine. Bunu daha açık hale getireceğim.
DJMcMayhem

@DJMcMayhem Gönderdikten sonra okudum, ancak böylesine kolay bir çatlak için ek kısıtlamalar koymak daha eğlenceli :-)
Giuseppe

5

Fıçı , dizi A000045 , A__ tarafından

Orijinal:

0.

çatlak:

01":&+.
 ^^^^^

Zorluğun <= 6 uzunluğunda bir alt dize bulmak olduğunu, ancak bulunan dizenin uzunluğu 5 olduğunu unutmayın.

Keg özelliklerine bakamayacak kadar tembel olanlar için komutların tanımı: 0ve 1ilgili sayıyı yığına itin; "yığının üstünü yığının altına (rulo) hareket ettirir; &boşsa, yığının üst kısmını kasanın içine sokar, aksi halde kaseti yığına boşaltır; +ilk iki yığın değerini ekler.

Birincisi 1"sadece yığının altına 1 ekler. Bu 1'lerin büyüyen listesi yalnızca ilk yinelemede bir rol oynar, burada yığının 1 0sadece olduğu gibi başladığını varsaymamıza izin verir 0. Nitekim, program 10:&+.nerede:&+ parçanın tekrarlandığı altta 1'lerin büyüyen bir listesine sahip olmaması haricinde, yukarıdaki çözümle aynı davranışa sahiptir.

Yana &tekrar kısmen sadece bir kez kullanılmış ve davranış alternatif olan, davranışı 1":&+yineleme parite bağlıdır.

Şimdi, bu program gerçekten baştan 0, 1 ile başlayan Fibonacci dizisini basmıyor; gerçekte 1, 0 Fibonacci dizisini ikinci yerden, yani 0'dan yazdırır. (Bu, aynı diziyle sonuçlanır.) Bunu bilerek, program kolayca analiz edilir:

  • Birinci, üçüncü, ... yineleme, devlet olarak başlar [a, b] vea+b (&=b) .
  • İkincisinde, dördüncü, ... yinelemede durum başlar [b] (&=a)ve biter[b, b+a] .

Bu gerçekten de diziyi gerektiği gibi hesaplar.


1
Güzel, şimdi de benim gibi Keg kullanan biri var.
Bir

@A__ Orijinal 6 karakterli dizginiz neydi? :)
tomsmeding

Aslında dizginize çok benzer; tek fark, :dizgenin başına bir komut eklememdir.
Bir

Bu bulabileceğiniz en kısa yerleştirilmiş dize mi?
Bir

2
Ahh. Bunu buldum, ancak meydan okuma <= 4 bayt olduğunda geri döndüm.
Khuldraeseth na'Barya



4

Pyret , dizi A083420 , MLavrentyev tarafından

fold({(b,e):(2 * b) + 1},1,[list: 0,0,])
                                  ^^^^

Burada çalıştırabilirsiniz, ancak koda nasıl bağlanacağını çözmedim. Kopyala yapıştırmanız gerekecek.

Sağlanan işlev ikinci argümanını yok sayar. İlkini ikiye katlar ve gerekli olanı oluşturacak bir tane ekler.2^n - 1 burada gereken sırayı yapmam gereken, katlanmış listenin uzunluğunu değiştirerek yapılan işlemi kaç defa yapması gerektiğini söylemek. Neyse ki, Pyret bu takip eden virgülden şikayetçi değil.


4

Python 3 , dizi A268575 göre A268575

Orijinal:

from itertools import product
S,F,D=lambda*x:tuple(map(sum,zip(*x))),lambda f,s:(v for x in s for v in f(x)),lambda s:{(c-48>>4,c&15)for c in map(ord,s)}
W=D("6@AQUVW")
print(len(W))

Çatlak (100 bayt):

from itertools import product
S,F,D=lambda*x:tuple(map(sum,zip(*x))),lambda f,s:(v for x in s for v in f(x)),lambda s:{(c-48>>4,c&15)for c in map(ord,s)}
W=D("6@AQUVW");A=-1,1,0;*X,=F(lambda a:(S(a,x)for x in product(A,A)),W);W={p for p in X if 2<X.count(p)<4+({p}<W)}
print(len(W))

Çevrimiçi deneyin!

Toplayabildiğim kadarıyla, orijinal kod gizli dizgiyi olabildiğince kısaltmak için tanımlamalar yapmakta ve ardından ilk Yaşam Oyunu modelini tanımlamaktadır. Gizli dize, Conway's of Life of 102 oyununda bir yineleme yazmaya eşdeğerdir.

Bu çatlağın amaçları için, Sargümanlarındaki elemanları toplayan (yinelenebilir olan) ve Flistenin her bir elemanına yinelemeyi döndüren ve tüm sonuçları bir araya getiren bir fonksiyondur.

  • ;A=-1,1,0;önceki ifadeyi sonlandırır ve product(A,A)tüm komşulara hücrenin kendisinin yanı sıra belirli bir hücreye göre veren A ile birlikte kısaltmayı (-1,1,0) kısaltır .
  • *X,=F(lambda a:(S(a,x)for x in product(A,A)),W);XKomşuların göreceli konumlarını her bir hücreye ekleyerek ve bunları bir listeye ayırarak , hücrelerin tüm komşularını Wve içindeki hücreleri Wkendi içinde tutan yeni bir liste oluşturur .
  • W={p for p in X if 2<X.count(p)<4+({p}<W)}bu listeyi gözden geçirir Xve içindeki her bir hücrenin bir Xsonraki yinelemedeki hücre kümesine ait olup olmadığını belirler . Bu neredeyse Life of Game golf oyunundan birebir alınmıştır .

NieDzejkob'un cevabı (102 byte hidden string!) Tarafından çok şaşırdım, kırmak için StackExchange'e katıldım, ancak yeni hesabımın diğer kişilerin yayınlarına yorum yapamadığı ve kurallara tam olarak uymadığım ortaya çıktı ( Bu benim suçum)
Liresol

CGCC'ye Hoşgeldiniz! Sizin için Cop cevabını yorumladım. Umarım etrafta satarsın!
Jo King,

Teşekkürler! Bunun gibi kod zorluklarını gerçekten denemedim ama bunu yapmak çok zordu.
Liresol

Aferin! Zamanı bulduğumda istediğim ipi açıklayacağım.
NieDzejkob

3

Haskell, A014675 tarafından Khuldraeseth na'Barya

Orijinal kod

main=print$uncurry(!!)([2],0)

Alt dize ile

main=print$uncurry(!!)                                   ([2],0)
                      $(\(a,n)->(a>>= \e->2:[1|e>1],n+1))

Çevrimiçi deneyin!


Bu işe yarar! flip take[1,2]İç lambda yerine ben vardı . Aksi takdirde aynı.
Khuldraeseth na'Barya

1
@ Khuldraesethna'Barya: (`take`[2,1])hatta bir bayt daha kısadır
nimi

Bu acıttı. Belki de Coulda bunu bir dokunuş için daha güvenli bulmuştu. (`take`)bir derleme hatasıyla karşılaştık, ben (`take`[2,1])de öyle olacağını düşündüm . :(
Khuldraeseth na'Barya


2

cQuents , dizi A003617 Stephen tarafından

=10#2:pZ
  ^

Çevrimiçi deneyin!

En düşük n + 1 basamaklı bir sayı ile başlayın, bir sayı n sıfıra döner. #2Sekans tanım tohuma bir kez uygulanan sekansı, yalnızca ikinci terim, basılacak olduğunu belirtir; Bu dizi tanımı basitçe bir sonraki üssü bulur ve döndürür.


2

Python 3 - agtoever

from sympy import isprime, primerange
from itertools import count
r=1
r+=1
while isprime(r-2)or r&1<1and r>3:r+=1
print(r)

Çevrimiçi deneyin!


2
Ben Goldbach hipotezi hakkında sorulan sebebi bence 2. yanında seri olarak eşit girdi varsa böyle bir çözüm bu doğru olmadığıdır bu size varsayım kabul edemeyiz eğer eserler, ancak aynı temel kullanır fikir (bunu çatlak olarak bırakmaktan çekinmeyin, sadece bilgili olmak istiyorum).
FryAmTheEggman

Güzel çözüm. Benimkinden daha kısa. Benimkini yarın göndereceğim (CET). Şu an elimde kodum yok. Çözümüm bir jeneratör ifadesi kullanıyor ve Gb varsayımına dayanmıyor, ancak bu yine de iyi bir golf (ve bence nitelendiren) cevabı olarak bırakıyor.
agtoever

1
@FryAmTheEggman Evet, OEIS'in "formül" bölümü, bunun bir ispata dayandığından bahsetmedi ... bir kanıtla brb;)
NieDzejkob

2

Matl sekans A000796 göre Luis Mendo

Orijinal:

'pi'td1_&:_1)Y$J)

Çevrimiçi deneyin!

çatlak:

'pi'td1_&:|SQ_1)Y$J)
          ^^^

Özgün yazar diziyi sinsice yarattı [-7:-1]ve sonra elde ettiği ilk öğeyi çıkardı ve ihmal etti 7. Daha sonra bunu yuvarlatılmış 7. basamak pi'yi almak için kullandı (ki 3) ve onu pi'nin ilk basamağı olarak sundu. Eklemek |SQorijinal diziyi tamamen pozitif yapar, sıralar ve her şeye bir tane ekler. Bu, indeksi almak yerine her şeyden sonra 7dizini -2bir uygulamadan -3sonra, iki uygulamadan sonra vb. Alır . Bu -önemlidir, çünkü Y$fonksiyona rakamları yuvarlamamasını söyler .


Benim tam gizli ipim! Aferin!
Luis Mendo

2

Forth (gforth) , A000042 , NieDzejkob tarafından

.( 1)1 .
^^^^^

Çevrimiçi deneyin!

Önemsiz 1-byter basitçe anlamını genişletiyor. Sorun şu ki, on dokuzuncu basamak kadar erken 64 bit taşması. Kolay düzeltme, tek basamağı tekrar tekrar yazdırmak, değil mi? Evet, ama o kadar kolay değil. 1 .Sonuna doğru uçmak gerçekte ihtiyacımız olan ek rakamları basacak olsa da , boşluklarla ayrılacaklardır. Bu işe yaramayacak.

Şimdi, Wikipedia'ya göre, " .((nokta-paren) parantezle ayrılmış bir dizeyi ayrıştırıp onu görüntüleyen hemen bir kelimedir." Neyse ki, göstermenin başka garip karakterleri yok, bu yüzden .(tek bir 1 yazdırmak yeterli olacaktır. Ve öyle. Yakın parkurdan sonra boşluğa gerek yoktur, bu nedenle bu beş karakter (açık parkurdan sonra boşluk vardır) kalplerimizin içeriğine tekrar edilebilir. Göstermek için TIO'ya birkaç kez 64 bitlik bir int'yi aşan bir örnek ekledim. ÇALIŞIYOR bir cazibe gibi.


Aferin! Bu tam olarak benim ipim.
NieDzejkob

2

Unefunge-98 (PyFunge) , dizi A000108 , tarafından NieDzejkob

1# 2g1+:2p4*6-*2g/.@
 ^^^^^^^^^^^^^^^^^

Çevrimiçi deneyin!

Altı kez tekrarladı

On dokuz kişinin yedeğini almak için iki bayt var! Bir boşluk gibi görünen aslında bir 0x01 Üstbilgi Başlangıcı karakteri var.

Açıklama:

Bu zorluk, tüm üretme hakkında a(n)gelen a(n-1)ve belki n. OEIS a(n) = (2n)!/(n!(n+1)!), kolayca dönüştürülebilecek kadar açık bir formül sağlar .a(n) = a(n-1) * (4n-6) / n . Şimdi bunu Funge'de uygulamak için.

Ben arasındaki kod eklenirken olmalı 1ve .. Yapbozun yarısı zaten yapıldı. Geriye kalan tek şey hangi kodun eklenmesi gerektiği? Funge, yığın işleme araçlarında özellikle yoksundur, bu nedenle yığının dibi sınırsızdır; İkisini de izlemem gerek nvea(n) yığın büyüyen olmadan. Bunu yapmak için Funge uzayından daha iyi ne olabilir?

Bu 0x01 karakteri benim sayacım n. a(n)Benim bit yürütme bittikten sonra yığında olması gerektiği gibi, yığını üzerinde tutmak .

1# 2g1+:2p4*6-*2g/.@
1                       Push 1. This is a(0).
 #                        Skip the next instruction. Without this, I believe the instruction pointer will reverse direction upon encountering 0x01.
   2g                     Push the third character in the source, which starts out as 1.
     1+                   Increment it...
       :                  ...copy it...
        2p                ...and put it back. One copy remains atop the stack.
          4*6-            Multiply by four. Subtract six.
              *           Multiply by a(n), leaving the result alone on the stack.
               2g         Push n again...
                 /        ...and divide our intermediate result by it. Ta-da!
                          At this point, the stack is the same as at the start of the indented block, except the one item has been advanced one place in the sequence.
                          The source of the program has changed; the third character holds the number of times this indented block has run.
                  .@    Print and terminate.


2

V, A000290 , DJMcMayhem tarafından

é*Ä2é*Ø.
  ^^^^

kareleri 1'den verir.

Çevrimiçi deneyin!

Temel , tüm arabelleğe yeni satır olmayan karakter sayısını é*ekler *ve Ø.sayar. Ekleme Ä, üst çizgiyi 2é*ekleyen kendi çizgisine kopyalar **. Eklemelerin birleştirilmesi en üstte en büyüğü olan art arda tek sayılar verir. Nihai Ø.sonuç ilk nd sayıyı toplar ve n-inci kareyi verir.


Ahh, tuhaf sayıları toplayarak, bunu düşünmedim. Güzel bitti :) Kelimenin tam anlamıyla çok daha fazla olan kare sayılarıÄÎé*<CR>
aldım

@DJMcMayhem Ben de ilk başta benzer düşündüm, ama bir şeyi karıştırdım / 6 bayt aldım, bu yüzden bu diğer yaklaşımı beynlaklak wiki'nin kare sayı yapısından tek sayıların toplanmasından esinlenerek denedim.
Kritixi Lithos,

2

AsciiDots , dizi A019523 tarafından Alion

\ +++ /
// \ / \

Bir Zamanlar!

İki defa!

On kere!

Kodun / dilin nasıl çalıştığını anlamaya çalışırken, mevcut kodun ilk iki satırının Fibonacci sırasını sonsuzca çıkaran tüm işleri yaptığını öğrendim. Kod, herhangi bir nokta çarptığında sona erer &, bu yüzden uygun sayıda girişin çıkmasını sağlamak için sadece kalan satırlara daha fazla gecikme eklemeye ihtiyacım vardı.

Bazı deneme, hata ve gözlemlerden sonra, doğru gecikme aralığının sayı başına 16 zaman birimi olduğunu keşfettim. Tek bir satıra yeterince karakter yerleştirmek olanaksız görünüyordu, bu yüzden gecikmeyi 2 satırda tutmam ve gerçek gecikme için 10 karakter bırakmam gerekecekti. Desenin kendisiyle eşleşmesi için, her iki satırın da 5 karaktere sahip olması gerekiyordu ve bir satırdaki ortadaki üç karakter iki kez dolaştırılabildiğinden, bu istenildiği gibi 16 zaman birimi veriyor.

Bu durumu &sekizinci sütuna eşleştirme zorunluluğu , üçüncü satırın iç kısmında yeni bir çizgiyle başlayabileceğimi fark edene kadar, bunu imkansız hale getirdi. Bu, penultimate satırını doğru uzunluk yapar ve üçüncü satırın artık gereksiz ucunu kaldırır.


1
Aşağıdakiler de çalışır: \v/v>-----)
SamYonnou

Harika iş, ikiniz. @SamYonnou amaçlanan çözüme yakındı . Ek olarak, farklı bir çözüme öncülük etmesine rağmen, düşünce sürecinin amaçlanan süreçle benzer olmasına sevindim!
Alion,

2

Brachylog , dizi A114018 ilgisiz dize tarafından

Orijinal program:

≜ṗ↔ṗb&w

Eklenecek dize:

≜ṗ↔ṗẹbb&w
    ^^

Çevrimiçi deneyin!

açıklama

İlk önce orjinal programın açıklaması: (kullanılan dizinin "en az n-basamaklı asal sayıdır).

≜         Assign an integer value to a variable named ? 
            (try 0, then 1, then -1, then 2, etc.)
 ṗ        ? must be prime
  ↔ṗ      The reverse of ? must be prime
    b     Remove the first element of ?
     &    Ignore that we removed that element
      w   Write ? to STDOUT

Gördüğünüz gibi, program bir şey dışında oldukça basittir: tamamen işe yaramaz b - behead hiçbir şey yapmadığımız sayımızın tersinin ilk öğesini kaldıran arama çağrısı vardır.

Bu ipi nasıl bulabileceğimize dair kesin bir ipucudur. Buradaki düşünce, diziyi her eklediğimizde sayının uzunluğunu 1 basamak artırmak istediğimizden, bu sayının uzunluğunu bir şekilde “değerlendiren” bir dizgeye ihtiyacımız var, bu işe yaramaz b.

Çözüm kullanılacaktır ẹb: ilk önce ẹ - elementssayıyı basamak listesine dönüştürecektir; daha sonra, b - beheadilk elemanını kaldıracak. İşin püf noktası brakamların listesi boşsa başarısız olur. Bu yüzden, her eklediğimizde b, istenen sayının uzunluğunu 1'e kadar artıracağız (çünkü atanan değer ?yeterince fazla basamak içerecek kadar yüksek, sonuncusu bbir basamak listesine uygulanacak şekilde başarısız olur).

Her seferinde yeniden uygulamanın hiçbir etkisi yoktur, çünkü bu zaten basamakların bir listesidir. Başlangıçta sadece bir kere ihtiyacımız var, çünkü 9001rakamların listesi yerine bir sayıya gidersek 001 = 1, rakam sayısı hakkında bilgi kaybederiz.


1
Çok iyi yapmışsın. Hatta hiç düşünmemiştim 9001b1sorunu aslında sadece rağmen ortaya çıktı beğer başarısız olur liste basamak boş aslında bir liste var asla eğer tek haneli sayılar 0 kafasını çünkü 0 kendisi de dahil olmak üzere, başarısız olmayacak .
İlişkisiz String

1
@UnrelatedString Kısacası: bgarip
Fatalize

2

VDM-SL , A000312 , Süresi Dolmuş Verilere Göre

let m={1|->{0}}in hd reverse[let x=x+1 in x**x|x in set m(1)&x<card m(1)]
                             ^^^^^^^^^^^^^

VDM-SL'nin letifadeleri, zaten kapalı bir kapsamda bağlanmış olan değişkenleri yeniden bağlayabildiğinden , orijinalinin bir öncekinden daha az iken, bir önceki kapsamda olduğundan daha fazla x**xolan kapsamlarda keyfi olarak derinlemesine yuvalanmış olarak değerlendirilebilir .xxm(1)


N = 11'e kadar test ettim ve iyi çalıştı
Unrelated String

... sadece bir sayı olması gerekiyordu. If you insert s somewhere into p, this program must print the second integer from the sequence. If you insert s + s into the same location in p, this program must print the third integer from the sequence. Örneğin davranışını not alın print(1).
İlişkisiz String

Ah sökmek, anlaşılabilir
İlişkisiz String

1
Bunun süper önemsiz olduğunu düşünmeyin, hala oldukça havalı!
Süresi Dolmuş Veriler

1
++Harita geçersiz kılmayı kullanmak için kullanın
Süresi Dolmuş Veriler


2

Haskell , A000045 (Fibonacci) , Rin Fourier dönüşümü ile

f = head $(flip(:)<*>sum.take 2)[0, 1]
         ^^^^^^^^^^^^^^^^^^^^^^^

Çevrimiçi deneyin!

23 bayt tam olarak.

Bu, eğlenceli ve biraz zor oldu. Bunun bir sorun olmadığını fark etmeden önce tersine çevrilen 0 ve 1 beni bir süreliğine attı. Orijinalin olmayışı, $bana $...$idparantez içinde sarılmaya başlayabilmemden önce (bir bayt çok uzun) gibi kabataslak şeyler denememi sağladı. Sonuçta, güzel bir küçük bulmaca.

H.PWiz desen eşleştirme bana en az beş bayt kurtarabilirdi belirtiyor: $(\[x,y]->[y,x+y]). Bu lanet nokta özgürlüğü mücadelesi beni heryerde özgür düşünmeye itiyor

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.