Rusia Nesting Quine


18

Boneka bersarang Rusia, lebih dikenal sebagai boneka Matryoshka , adalah boneka yang berisi versi dirinya yang lebih kecil, yang kemudian berisi versi dirinya yang lebih kecil, yang berisi versi dirinya yang lebih kecil, yang berisi versi dirinya yang lebih kecil, yang berisi versi yang lebih kecil dari dirinya sendiri ... - sampai akhirnya, yang terakhir kosong. Sebuah contoh:

Boneka Matryoshka <3

Hari ini tujuan Anda adalah untuk meniru tradisi Rusia ini dengan menulis sebuah program atau fungsi yang, ketika mengandung dirinya sendiri N kali, akan mencetak dirinya sendiri yang berisi N-1 salinan waktu itu sendiri.

Misalnya, program boneka abcdakan memiliki program N = 3 abababcdcdcd, yang akan mencetak program N = 2 ababcdcd, yang mencetak program N = 1 asli abcd, yang akhirnya mencetak N = 0, yang kosong. Secara teori ini harus bekerja untuk nilai N. apa pun yang masuk akal

Aturan:

  • Berikut adalah program TIO untuk membantu menghasilkan program boneka berdasarkan program Anda
  • Aturan Quine Standar berlaku
  • Berlaku celah standar
  • 'Berisi' berarti langsung di tengah versi sebelumnya, jadi solusi Anda harus memiliki jumlah genap positif. Suatu program dengan panjang 10 akan memiliki salinan aslinya dimasukkan setelah byte kelima, kemudian yang lain setelah byte kesepuluh dll.
  • Spasi tunggal trailing diperbolehkan dalam output
  • Karena ini adalah , tujuan Anda adalah membuat program N = 1 Anda sesingkat mungkin.
  • Penjelasan kode Anda akan dihargai


Untuk apa Nukuran kode diukur?
flawr

@ flawr N = 1 .....
Jo King


12
Apakah animasi itu benar - benar diperlukan ?!
Shaggy

Jawaban:



9

JavaScript, 36 32 byte

Mengambil keuntungan dari fakta yang Function.prototype.toString()tidak membutuhkan argumen dan karena itu akan mengabaikan apa pun yang diteruskan ke sana.

Sebagian terinspirasi oleh solusi user202729 .

f=_=>f.toString( ).slice(14,-16)

Cobalah

o.innerHTML=["<span>Five</span>",(f=_=>f.toString(f=_=>f.toString(f=_=>f.toString(f=_=>f.toString(f=_=>f.toString( ).slice(14,-16) ).slice(14,-16) ).slice(14,-16) ).slice(14,-16) ).slice(14,-16))(),"<span>Four</span>",(f=_=>f.toString(f=_=>f.toString(f=_=>f.toString(f=_=>f.toString( ).slice(14,-16) ).slice(14,-16) ).slice(14,-16) ).slice(14,-16))(),"<span>Three</span>",(f=_=>f.toString(f=_=>f.toString(f=_=>f.toString( ).slice(14,-16) ).slice(14,-16) ).slice(14,-16))(),"<span>Two</span>",(f=_=>f.toString(f=_=>f.toString( ).slice(14,-16) ).slice(14,-16))(),"<span>One</span>",(f=_=>f.toString( ).slice(14,-16))(),"<span>Thunderbirds Are Go!</span>"].join`\n`
span{font-weight:bold;font-size:16px;line-height:1.5em;text-transform:uppercase;}span:last-child{font-size:8px;}
<pre id=o></pre>



5

Jelly , 16 byte

Ṿḣ-9Ḋð}“““““““““

Cobalah online!

Gandakan: Coba online!

Tiga Kali Lipat: Coba online!


Jelly tidak memiliki struktur sarang, tetapi string stringnya diakhiri secara otomatis.


Ṿḣ-9Ḋ    First chain. (monadic)
Ṿ        Uneal. (to string)
 ḣ-9     Take the ead, ends at the -9'th character.
    Ḋ    equeue, remove the first character.

     ð             Terminate the first chain, start a new one.
      }            Convert the last monadic chain to a dyadic one.
       “““““““““   String literal.
                   This matches the pattern <dyad> <nilad>, so applies
                   the the corresponding rules. This way a link can take data
                   to the right of it.

Akan mencoba pendekatan yang berbeda untuk melihat apakah mereka bisa lebih pendek.




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.