1, 2, 3, 14 ... หรือมันคือ 15?


32

เพลงที่รู้จักกันดีโดยวงร็อคไอริชU2เริ่มต้นด้วยนักร้อง Bono พูดว่า "1, 2, 3, 14" ในภาษาสเปน (" uno, dos, tres, catorce ")

มีหลาย ทฤษฎีเกี่ยวกับความสำคัญของตัวเลขเหล่านั้น เห็นได้ชัดว่าคำอธิบายอย่างเป็นทางการคือ " เราดื่มมากเกินไปในคืนนั้น " แต่มีสมมติฐานที่น่าสนใจมากกว่านี้: Bono หมายถึงลำดับจำนวนเต็มบางส่วนจาก OEIS เช่น

A107083 :

จำนวนเต็มที่kเช่นนั้น10^k + 31สำคัญ
1, 2, 3, 14, 18, 44, 54...

ในการให้สัมภาษณ์เมื่อถามคำถามที่หลีกเลี่ยงไม่ได้ "ทำไม 14" Bono ยอมรับว่าเขาเบื่อกับจำนวนนั้น นักข่าวแนะนำว่า "15" แทนและในคืนคอนเสิร์ตนั้นเนื้อเพลงก็เปลี่ยนเป็น "1, 2, 3, 15" (เรื่องราวสามารถอ่านได้ที่นี่ในภาษาสเปน) มีแนวโน้มที่นักข่าวจะได้รับแรงบันดาลใจจาก

A221860 :

ดัชนีkดังกล่าวที่prime(k) - kเป็นพลังของ2ที่prime(k)เป็นที่kสำคัญ -
1, 2, 3, 15, 39, 2119, 4189897...

ความท้าทาย

เขียนสองโปรแกรมในภาษาเดียวกัน ครั้งแรกควรใช้อินพุทnและเอาท์พุทnเทอม -th ของA107083หรือnเทอมแรก ในทำนองเดียวกันที่สองควรส่งออกnคำที่ - A221860หรือnคำแรก

คะแนนเป็นผลรวมของความยาวของทั้งสองโปรแกรมในไบต์บวกตารางของLevenshtein ระยะทางระหว่างการแสดงไบต์ของทั้งสองโปรแกรม

หากมีการใช้การเข้ารหัสอักขระที่อักขระแต่ละตัวสอดคล้องกับหนึ่งไบต์สคริปต์นี้สามารถใช้เพื่อวัดระยะทาง Levenshtein

ตัวอย่างเช่นถ้าทั้งสองโปรแกรมabcdefghและคะแนนคือbcdEEfg8 + 7 + 4^2 = 31

คะแนนต่ำสุดชนะ

กฎ Aditional

  • เอาต์พุตสามารถเป็น1-based หรือ0-based ได้อย่างอิสระสำหรับแต่ละลำดับ (ดังนั้นจึงอนุญาตให้ใช้หากหนึ่งในโปรแกรมนั้นเป็น1-based และอีกอันคือ0-based)

  • แต่ละคนสามารถโปรแกรมอย่างต่อเนื่อง แต่เป็นอิสระจากที่อื่น ๆ ทั้งการส่งออกnระยะ -th หรือแรกnแง่

  • อนุญาตให้โปรแกรมหรือฟังก์ชั่นเป็นอิสระสำหรับแต่ละลำดับ

  • input และ output วิธีการและรูปแบบที่มีความยืดหยุ่นได้ตามปกติ ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม

คำตอบ:


20

เยลลี่ , 16 + 16 + 1² = 33

A107083

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

ลองออนไลน์!

A221860

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

ลองออนไลน์!

มันทำงานอย่างไร

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

เยลลี่ , 12 + 12 + 8² = 88 ไบต์

1, 2, 3, 14

ÆN_µæḟ2=
1Ç#

ลองออนไลน์!

1, 2, 3, 15

10*+31ÆP
1Ç#

ลองออนไลน์!


1) มันควรจะให้ผลลัพธ์เทอมที่ไม่ใช่เทอม n แรก 2) เฮ้หนึ่งในตัวอย่างของเราเกือบจะเหมือนกัน! 3) เอ่อ ... ที่10รู้สึกยาวมาก
Erik the Outgolfer

1) แทนที่จะส่งออกคำศัพท์ที่ n แต่ละโปรแกรมสามารถส่งออกคำศัพท์แรกได้อย่างอิสระ
Leun Nun

หืมดังนั้นจะทำให้คำตอบของฉันมีคะแนนน้อยลง
Erik the Outgolfer

@EriktheOutgolfer ขออภัยเกี่ยวกับความสับสนฉันได้รวมไว้ในข้อความหลักเพื่อความชัดเจนมากขึ้น (ก่อนหน้านี้มันอยู่ภายใต้ "กฎเพิ่มเติม" เท่านั้น)
Luis Mendo


3

MATL , 17 + 17 + 7² = 83

1, 2, 3, 14, ... (17 ไบต์)

0G:"`Q11qy^31+Zp~

ลองออนไลน์!

1, 2, 3, 15, ... (17 ไบต์)

0G:"`QtYqy-Bzq~p~

ลองออนไลน์!

ทั้งคู่ใช้รูปแบบที่คล้ายกัน0G:"`Qเพื่อให้ตัวนับวิ่งขึ้นและกลับมาเมื่อเงื่อนไขตรงตามnเวลา โปรแกรมจริงนั้นค่อนข้างตรงไปตรงมา 15ตัวแปรที่มีฟิลเลอร์บางส่วน ( ~p~) เพื่อลด Levenshtein ระยะทางในขณะที่14โปรแกรมมีพนักงาน11qyมากกว่าt10wเพื่อให้ตรงกับโปรแกรมอื่นที่ดีกว่า

ส่วนที่ใช้ร่วมกัน:

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

โปรแกรมยอดนิยม:

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

โปรแกรมด้านล่าง:

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 (ดั้งเดิม) , 10 + 11 + 6 2 = 84 69 57 ไบต์

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

ε>а32<+p

ลองออนไลน์

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

ε>Ð<ØαD<&_

ลองออนไลน์

n

½counter_variableµcounter_variablea

คำอธิบาย:

Î            # 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)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.