Bangga dengan twist

13

Catatan: ini sangat terinspirasi oleh pertanyaan ini .

Tugas:

Tugas Anda adalah untuk menghasilkan nperdana, ketika setiap karakter program Anda diulang nkali di tempat.

Katakanlah program Anda adalah:

Derp

Setiap karakter di sana diulangi sekali, jadi harus keluar 2.

Ketika setiap karakter digandakan, seperti:

DDeerrpp

Ini harus menghasilkan prime 2, yaitu 3.

Spesifikasi:

  • Program Anda tidak boleh menerima input, dan menampilkan prime masing-masing.
  • Program Anda harus bekerja untuk semua bilangan prima, diberikan waktu dan memori yang cukup.
  • Memimpin dan mengikuti baris baru baik-baik saja.
  • Keluaran harus dalam basis default bahasa - jika tidak ada default, basis apa pun baik-baik saja.

Ini adalah , jadi kode terpendek dalam byte menang.

clismique
sumber
6
Apakah program Anda harus bekerja untuk semua bilangan prima, mengingat waktu dan memori yang cukup. berarti saya tidak dapat menggunakan, misalnya, int di C?
Dennis

Jawaban:

21

Jelly , 13 byte

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

Cobalah online! atau jalankan sepuluh program pertama .

Latar Belakang

Jelly memiliki beberapa jenis string literal; semuanya dimulai dengan a . Jika literal berisi lebih dari satu , array string dikembalikan, dan memisahkan string satu sama lain.

Misalnya, “abc“def”hasil ['abc', 'def'].

Bergantung pada karakter terakhir dari literal (salah satu dari ”«»‘’, di mana «saat ini tidak diterapkan), seseorang dapat memilih antara berbagai jenis literal. Karena , kami mendapatkan poin kode di halaman kode Jelly alih-alih karakter Unicode yang sesuai.

Misalnya, “abc“def‘hasil [[97, 98, 99], [100, 101, 102]].

Literal dalam tiga program pertama sesuai dengan array titik kode berikut.

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

Cara kerjanya ( 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.
Dennis
sumber
1
Ini jelas membutuhkan penjelasan ... dan tergantung pada bagaimana penjelasannya, mungkin itu satu-satunya bahasa yang bisa melakukan ini?
Nilai Tinta
6
Apa ... bagaimana? Itu terlalu cepat.
clismique
@ ValueInk Saya sudah mengedit jawaban saya.
Dennis
21

GS2 ( commit 67fea47 ), 6 3 byte

dnR

Bagaimana itu bekerja

Seperti kebanyakan perintah, GS2 dkelebihan beban. Awalnya, ada daftar kosong (input atau kekurangannya) pada stack, jadi dhitung jumlahnya. Setelah iterasi pertama, ada 0 pada stack, dan dmenghitung paritasnya (juga 0 ). Jadi, tidak peduli berapa kali kita mengulangi d, hasilnya akan selalu menjadi 0 tunggal .

Bagian selanjutnya mudah. Perintah nmuncul di bagian atas tumpukan dan mendorong nomor utama berikutnya. Jadi, ulangin k kali menghitung k utama.

Akhirnya, perintah hanya menerapkan str ke atas tumpukan, yang mengubah angka menjadi representasi string dan tidak mempengaruhi string. Jadi, tidak peduli berapa kali kita mengulanginyaR , hasilnya akan menjadi representasi string dari k utama.

Dennis
sumber
2
apa-apaan ini !?
downrep_nation
3
Jangan Menyadarkan
Trauma Digital