1, 2, 3, 14… ya da 15 mi?


32

İrlandalı rock grubu U2 tarafından iyi bilinen bir şarkı , şarkıcı Bono ile İspanyolcada "1, 2, 3, 14" (" uno, dos, tres, catorce ") diyerek başlıyor .

Bu sayıların önemi ile ilgili çeşitli teoriler var . Görünüşe göre resmi açıklama " biz o gece çok içtik ". Ancak daha ilginç bir hipotez var: Bono, OEIS'den gelen bazı tamsayı dizisine atıfta bulunuyor.

A107083 :

Tamsayılar kböyle 10^k + 31asaldır.
1, 2, 3, 14, 18, 44, 54, ...

Bir röportajda, kaçınılmaz soru "neden 14" sorulduğunda, Bono bu rakamdan biraz bıktığını itiraf etti. Gazeteci bunun yerine "15" i önerdi ve o geceki konserde sözler gerçekten "1, 2, 3, 15" olarak değiştirildi. (Hikaye burada , İspanyolca olarak okunabilir ). Muhtemelen gazeteci ilham aldı

A221860 :

Endeksler kböyle prime(k) - kbir gücü 2, prime(k)bir k-inci asal.
1, 2, 3, 15, 39, 2119, 4189897, ...

Meydan okuma

Aynı dilde iki program yazın. İlk önce bir giriş almak gerekir nve çıkış narasında inci terimi A107083 , ya da ilk nkoşullar. Benzer şekilde, ikincisi A221860'ınn birinci terimini ya da ilk terimleri çıkarmalıdırn .

bir toplamı ve uzunlukları bayt iki program, artı kare arasında Levenshtein mesafe iki program bayt gösterimleri arasında.

Bir karakter kodlaması, her karakter bir byte'a karşılık gelecek şekilde kullanılırsa , bu script Levenshtein mesafesini ölçmek için kullanılabilir.

Örneğin, eğer iki program abcdefghve bcdEEfgpuan ise 8 + 7 + 4^2 = 31.

En düşük puan kazanır.

Ek kurallar

  • Çıktı, her bir sıra için bağımsız olarak, 1temelli veya 0temelli olabilir (bu nedenle programlardan birinin 1temelli, diğeri ise temel 0alınabilir).

  • Her program, tutarlı bir şekilde ancak diğerinden bağımsız olarak, ya nbirinci terimi ya da birinci terimi çıkartabilir n.

  • Program veya fonksiyonlara, her sekans için bağımsız olarak izin verilir.

  • Giriş ve çıkış araçları ve formatı her zamanki gibi esnektir . Standart boşluklar yasaktır .

Yanıtlar:


20

Jöle , 16 + 16 + 1² = 33

A107083

⁵*+31ÆḍÆNB>/
1Ç#

Çevrimiçi deneyin!

A221860

⁵*+31ÆạÆNB>/
1Ç#

Çevrimiçi deneyin!

Nasıl çalışır

1Ç#           Main link. Argument: n

1             Set the return value to 1.
 Ç#           Call the helper link with arguments k, k + 1, k + 2, ... until n of
              them return a truthy value. Return the array of n matches.


⁵*+31ÆḍÆNB>/  Helper link. Argument: k

⁵*            Yield 10**k.
  +31         Yield 10**k + 31.
     Æḍ       Count the proper divisors of 10**k + 31.
              This yields c = 1 if 10**k + 31 is prime, an integer c > 1 otherwise.
       ÆN     Yield the c-th prime.
              This yields q = 2 if 10**k + 31 is prime, a prime q > 2 otherwise.
         B    Binary; yield the array of q's digits in base 2.
          >/  Reduce by "greater than".
              This yields 1 if and only if the binary digits match the regex /10*/,
              i.e., iff q is a power of 2, i.e., iff 10**k + 31 is prime.


⁵*+31ÆạÆNB>/  Helper link. Argument: k

     Æ        Unrecognized token.
              The token, as well as all links to its left, are ignored.
       ÆN     Yield p, the k-th prime.
      ạ       Take the absolute difference of k and p, i.e., p - k.
         B    Binary; yield the array of (p - k)'s digits in base 2.
          >/  Reduce by "greater than".
              This yields 1 if and only if the binary digits match the regex /10*/,
              i.e., iff p - k is a power of 2.


4

Jöle , 12 + 12 + 8² = 88 bayt

1, 2, 3, 14

ÆN_µæḟ2=
1Ç#

Çevrimiçi deneyin!

1, 2, 3, 15

10*+31ÆP
1Ç#

Çevrimiçi deneyin!


1) İlk terimi değil, ilk terimi çıkarmalıdır. 3) Uhh ... bu 10çok uzun sürüyor.
Outgolfer Erik

1) n. Terimi çıkarmak yerine, her program bağımsız olarak ilk n terimini çıkartabilir.
Çatlak Rahibe

Hm, bu yüzden cevabımı daha küçük bir puanla yapabilirim.
Outgolfer Erik

@EriktheOutgolfer Karışıklık için üzgünüm, daha fazla netlik için ana metne dahil ettim (daha önce sadece "ek kurallar" altındaydı)
Luis Mendo


3

MATL , 17 + 17 + = 83

1, 2, 3, 14, ... (17 bayt)

0G:"`Q11qy^31+Zp~

Çevrimiçi deneyin!

1, 2, 3, 15, ... (17 bayt)

0G:"`QtYqy-Bzq~p~

Çevrimiçi deneyin!

Her ikisi de 0G:"`Q, bir koşulun yerine getirildiği nzamanlarda çalışan ve dönen bir sayacın olması için benzer düzeni kullanır . Gerçek program o zaman oldukça basittir. 15Varyantı bir dolgu maddesi (var ~p~ise, Levenshtein mesafe en aza indirmek için) 14programı kullanır 11qyyerine t10wdaha iyi bir başka programa göre.

Paylaşılan bölüm:

0      % Push counter (initially zero)
 G:"   % Loop `n` times
    `  % Do .... while true
     Q % Increment counter

En iyi program:

11q         % Push 10
   y        % Duplicate counter
    ^       % Power
     31+    % Add 31
        Zp  % isprime
          ~ % If not, implicitly continue to next iteration. 
            % Else, implicit display of counter.

Alt program:

tYq         % Nth prime based on counter
   y-       % Duplicate counter, subtract from nth prime.
     Bzq    % Number of ones in binary presentation, minus one (only zero for powers of two).
        ~p~ % Filler, effectively a NOP.
            % If not zero, implicitly continue to next iteration
            % Else, implicitl display of counter.

1

05AB1E (eski) , 10 + 11 + 6 2 = 84 69 57 bayt

1, 2, 3, 14, ... (A107083)

ε>а32<+p

Çevrimiçi deneyin.

1, 2, 3, 15, ... (A221860)

ε>Ð<ØαD<&_

Çevrimiçi deneyin.

Her ikisi de 1 tabanlı çıktı ninci değer.

Öyle beri 05AB1E eski sürümünü kullanır ½( artış counter_variableyığınının üst truthy ise 1 ile dolaylı olarak her bir yineleme sonra) µ-loops ( süre counter_variableiçin eşit değildirbirhenüz, ... ).

Açıklama:

Î            # Push 0 and the input
 µ           # While the counter_variable is not equal to the input yet:
  >          #  Increase the top by 1
   Ð         #  Triplicate it (which is our `k`)
    °32<+    #  Take 10 to the power `k`, and add 31
         p   #  Check if this is a prime
             #  (implicit: if it is a prime, increase the counter_variable by 1)
             # (implicitly output the top of the stack after the while-loop)

Î            # Push 0 and the input
 µ           # While the counter_variable is not equal to the input yet:
  >          #  Increase the top by 1
   Ð         #  Triplicate it (which is out `k`)
           #  Get the 0-indexed k'th prime
      α      #  Get the absolute difference of this prime with the copied `k`
       D<&   #  Calculate `k` Bitwise-AND `k-1`
          _  #  And check if this is 0 (which means it's a power of 2)
             #  (implicit: if it is 0, increase the counter_variable by 1)
             # (implicitly output the top of the stack after the while-loop)
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.