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
Jo King
sumber
Posting kotak pasir (dihapus)
Jo King
Untuk apa Nukuran kode diukur?
flawr
@ flawr N = 1 .....
Jo King
12
Apakah animasi itu benar - benar diperlukan ?!
Shaggy

Jawaban:

9

Underload , 4 byte

N = 1: Cobalah secara online.

 ()S

N = 2: Coba online.

 ( ()S)S

N = 3: Cobalah online.

 ( ( ()S)S)S

Penjelasan:

Cukup jelas, tetapi saya tetap menambahkannya.

  • (...)S mencetak apa saja di antara tanda kurung ke STDOUT
  • Ruang sebelum itu adalah no-op untuk membuat byte-count lebih merata dan mematuhi aturan tantangan.
Kevin Cruijssen
sumber
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>

Shaggy
sumber
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.

pengguna202729
sumber
2

dc , 4 byte

 []p

Mirip dengan beberapa jawaban lain, karena string dcsudah mulai ( [) dan akhir ( ]) pembatas (yaitu, "tidak melakukan kedua tugas, dll.), Mereka bersarang tanpa upaya nyata.puntuk mencetak.

N = 1: Coba online!

N = 2: Cobalah bersarang!

N = 3: Cobalah nesteder!

brhfl
sumber