1, 2, 3, 14, hay 15?


32

Một bài hát nổi tiếng của ban nhạc rock Ailen U2 bắt đầu bằng ca sĩ Bono nói "1, 2, 3, 14" bằng tiếng Tây Ban Nha (" uno, dos, tres, catorce ").

nhiều lý thuyết khác nhau về tầm quan trọng của những con số đó. Rõ ràng lời giải thích chính thức là " chúng tôi đã uống quá nhiều đêm đó ". Nhưng có một giả thuyết thú vị hơn: Bono đang đề cập đến một số chuỗi số nguyên từ OEIS, chẳng hạn như

A107083 :

Số nguyên knhư vậy 10^k + 31là số nguyên tố.
1, 2, 3, 14, 18, 44, 54, ...

Trong một cuộc phỏng vấn, khi được hỏi câu hỏi không thể tránh khỏi "tại sao 14", Bono thừa nhận anh hơi mệt mỏi với con số đó. Nhà báo đã đề nghị "15" thay vào đó, và trong buổi hòa nhạc đêm đó, lời bài hát đã thực sự được đổi thành "1, 2, 3, 15". (Câu chuyện có thể được đọc ở đây , bằng tiếng Tây Ban Nha). Rất có thể nhà báo đã lấy cảm hứng từ

A221860 :

Các chỉ số knhư vậy prime(k) - klà một sức mạnh của 2, đâu prime(k)là số knguyên tố thứ.
1, 2, 3, 15, 39, 2119, 4189897, ...

Các thách thức

Viết hai chương trình trong cùng một ngôn ngữ. Đầu tiên nên có một đầu vào nvà đầu ra nthuật ngữ thứ A của A107083 , hoặc các nđiều khoản đầu tiên . Tương tự, lần thứ hai sẽ xuất ra nthuật ngữ thứ A của A221860 hoặc các nđiều khoản đầu tiên .

Các điểmtổng của độ dài của hai chương trình, tính bằng byte, cộng với hình vuông của khoảng cách Levenshtein giữa cơ quan đại diện byte của hai chương trình.

Nếu mã hóa ký tự được sử dụng sao cho mỗi ký tự tương ứng với một byte, tập lệnh này có thể được sử dụng để đo khoảng cách Levenshtein.

Ví dụ, nếu hai chương trình là abcdefghbcdEEfg, điểm số là 8 + 7 + 4^2 = 31.

Điểm số thấp nhất chiến thắng.

Quy tắc bổ trợ

  • Đầu ra có thể 1dựa trên cơ sở hoặc 0dựa trên cơ sở, độc lập cho từng chuỗi (vì vậy nó được phép nếu một trong các chương trình được 1dựa trên cơ sở và chương trình còn lại dựa trên cơ sở 0).

  • Mỗi chương trình có thể, nhất quán nhưng độc lập với nhau, có thể đưa ra nthuật ngữ -th hoặc các nđiều khoản đầu tiên .

  • Các chương trình hoặc chức năng được cho phép, độc lập cho từng chuỗi.

  • Phương tiện đầu vào và đầu ra và định dạng linh hoạt như bình thường . Sơ hở tiêu chuẩn bị cấm .

Câu trả lời:


20

Thạch , 16 + 16 + 1² = 33

A107083

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

Hãy thử trực tuyến!

A221860

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

Hãy thử trực tuyến!

Làm thế nào nó hoạt động

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

Thạch , 12 + 12 + 8² = 88 byte

1, 2, 3, 14

ÆN_µæḟ2=
1Ç#

Hãy thử trực tuyến!

1, 2, 3, 15

10*+31ÆP
1Ç#

Hãy thử trực tuyến!


1) Nó sẽ xuất ra thuật ngữ thứ n, không phải là thuật ngữ n đầu tiên 2) Này, một trong những đoạn của chúng tôi gần giống nhau! 3) Uhh ... 10cảm thấy rất dài.
Erik các Outgolfer

1) Thay vì xuất ra thuật ngữ thứ n, mỗi chương trình có thể xuất độc lập các thuật ngữ n đầu tiên.
Leaky Nun

Hừm, vậy thì câu trả lời của tôi sẽ có điểm nhỏ hơn.
Erik các Outgolfer

@EriktheOutgolfer Xin lỗi về sự nhầm lẫn, tôi đã kết hợp nó vào văn bản chính để rõ ràng hơn (trước đây nó chỉ nằm dưới "quy tắc bổ sung")
Luis Mendo


3

TOÁN , 17 + 17 + 7² = 83

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

0G:"`Q11qy^31+Zp~

Hãy thử trực tuyến!

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

0G:"`QtYqy-Bzq~p~

Hãy thử trực tuyến!

Cả hai đều sử dụng sơ đồ tương tự 0G:"`Qđể có một bộ đếm chạy lên và quay lại khi một điều kiện đã được đáp ứng nnhiều lần. Chương trình thực tế sau đó khá đơn giản. Các 15biến thể có một số phụ ( ~p~) để giảm thiểu khoảng cách Levenshtein, trong khi 14chương trình sử dụng một 11qychứ không phải là t10wđể phù hợp với chương trình khác tốt hơn.

Phần chia sẻ:

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

Chương trình hàng đầu:

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

Chương trình dưới cùng:

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 (di sản) , 10 + 11 + 6 2 = 84 69 57 byte

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

ε>а32<+p

Hãy thử trực tuyến.

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

ε>Ð<ØαD<&_

Hãy thử trực tuyến.

Cả hai đều xuất 1 dựa trên ngiá trị thứ.

Sử dụng phiên bản kế thừa của 05AB1E, vì nó ½( tăng counter_variable1 nếu đỉnh của ngăn xếp là trung thực ) ngầm sau mỗi lần lặp của µ-loops ( trong khi counter_variablekhông bằngmộtchưa, làm ... ).

Giải trình:

Î            # 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)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.