Số nguyên tố với một twist


13

Lưu ý: điều này được truyền cảm hứng rất nhiều bởi câu hỏi này .

Bài tập:

Nhiệm vụ của bạn là tạo ra số nnguyên tố thứ, khi mỗi ký tự của chương trình của bạn được lặp lại nhiều nlần.

Giả sử chương trình của bạn là:

Derp

Mỗi ký tự trong đó được lặp lại một lần, vì vậy nó sẽ xuất ra 2.

Khi mọi nhân vật được nhân đôi tại chỗ, như vậy:

DDeerrpp

Điều này sẽ tạo ra số nguyên tố thứ 2, đó là 3.

Thông số kỹ thuật:

  • Chương trình của bạn phải chấp nhận không có đầu vào và xuất ra số nguyên tố tương ứng.
  • Chương trình của bạn phải hoạt động cho tất cả các số nguyên tố, được cung cấp đủ thời gian và bộ nhớ.
  • Hàng đầu và dấu vết mới là tốt.
  • Đầu ra phải ở trong cơ sở mặc định của ngôn ngữ - nếu không có mặc định, bất kỳ cơ sở nào cũng ổn.

Đây là , vì vậy mã ngắn nhất tính bằng byte thắng.


6
chương trình của bạn phải làm việc cho tất cả các số nguyên tố, nếu có đủ thời gian và bộ nhớ. có nghĩa là tôi không thể sử dụng, ví dụ, int trong C?
Dennis

Câu trả lời:


21

Thạch , 13 byte

“Ŀo‘’FQỌµḟ;¹V

Hãy thử trực tuyến! hoặc chạy mười chương trình đầu tiên .

Lý lịch

Jelly có một số loại chuỗi ký tự khác nhau; tất cả đều bắt đầu bằng a . Nếu nghĩa đen chứa nhiều hơn một , một chuỗi chuỗi được trả về và tách các chuỗi với nhau.

Ví dụ, “abc“def”sản lượng ['abc', 'def'].

Tùy thuộc vào ký tự cuối cùng của chữ (bất kỳ ”«»‘’, «hiện không được thực hiện), người ta có thể chọn giữa các loại chữ khác nhau. Đối với , chúng tôi nhận được các điểm mã trong trang mã của Jelly thay vì các ký tự Unicode tương ứng.

Ví dụ, “abc“def‘sản lượng [[97, 98, 99], [100, 101, 102]].

Các chữ trong ba chương trình đầu tiên tương ứng với các mảng điểm mã sau.

“Ŀo‘           -> [199, 111]
““ĿĿoo‘        -> [[], [199, 199, 111, 111]]
“““ĿĿĿooo‘     -> [[], [], [199, 199, 199, 111, 111, 111]]

Cách thức hoạt động ( n = 3 )

“““ĿĿĿooo‘‘‘’’’FFFQQQỌỌỌµµµḟḟḟ;;;¹¹¹VVV  Main link. Implicit argument: 0

“““ĿĿĿooo‘                               Yield the 2D array
                                         [[], [], [199, 199, 199, 111, 111, 111]].
          ‘‘                             Increment twice, yielding
                                         [[], [], [201, 201, 201, 113, 113, 113]].
            ’’’                          Decrement thrice, yielding
                                         [[], [], [198, 198, 198, 110, 110, 110]].
               F                         Flatten, yielding
                                         [198, 198, 198, 110, 110, 110].
                FF                       Twice more. Does nothing.
                  Q                      Unique; yield [198, 110].
                   QQ                    Twice more. Does nothing.
                     Ọ                   Unordinal; convert the Unicode code points
                                         198 and 110 to 'Æ' and 'n'.
                      ỌỌ                 Twice more. Does nothing.
                        µµµ              Begin three monadic chains, all with
                                         argument s := "Æn".
                           ḟ             Filter-false; remove the characters of s
                                         from s, yielding "".
                            ḟḟ           Twice more. Does nothing.
                              ;;;¹       Concatenate with s three times, yielding
                                         "ÆnÆnÆn".
                                  ¹¹     Identity function. Does nothing.
                                    V    Eval the resulting Jelly code, i.e.,
                                         call the next-prime atom thrice, with
                                         initial implicit argument 0.
                                     VV  Eval two more times. This is a no-op
                                         on integers.

1
Điều này chắc chắn là cần một lời giải thích ... và tùy thuộc vào cách nó được trình bày, nó có thể là ngôn ngữ duy nhất có thể làm điều này?
Mực giá trị

6
Cái gì ... như thế nào? Đó chỉ đơn giản là cách quá nhanh.
clismique

@ValueInk Tôi đã chỉnh sửa câu trả lời của mình.
Dennis

21

GS2 ( cam kết 67fea47 ), 6 3 byte

dnR

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

Giống như hầu hết các lệnh, GS2 dbị quá tải. Ban đầu, có một danh sách trống (đầu vào hoặc thiếu) trên ngăn xếp, do đó, dtính tổng của nó. Sau lần lặp đầu tiên, có 0 trên ngăn xếp và dtính chẵn lẻ của nó (cũng là 0 ). Do đó, bất kể chúng ta lặp lại bao nhiêu lần d, kết quả sẽ luôn là 0 .

Phần tiếp theo là đơn giản. Lệnh nbật lên trên cùng của ngăn xếp và đẩy số nguyên tố tiếp theo. Do đó, lặp lại n k lần tính k nguyên tố.

Cuối cùng, lệnh chỉ đơn giản áp dụng str vào đầu ngăn xếp, chuyển đổi một số thành biểu diễn chuỗi của nó và không ảnh hưởng đến chuỗi. Do đó, cho dù chúng ta lặp lại bao nhiêu lần R, kết quả sẽ là biểu diễn chuỗi của k nguyên tố.


2
những gì trên trái đất!?
downrep_nation

3
Không hồi sức
Chấn thương kỹ thuật số
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.