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.


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.

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.


2
apa-apaan ini !?
— downrep_nation

3
Jangan Menyadarkan
— Trauma Digital
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.