Tulis blok teks persegi panjang yang bila disusun menjadi karpet Sierpinski , menggunakan blok ruang berukuran sama untuk bagian yang kosong, buat program yang menampilkan jumlah iterasi karpet.
Misalnya, jika blok teks Anda
TXT
BLK
kemudian jalankan program
TXTTXTTXT
BLKBLKBLK
TXT TXT
BLK BLK
TXTTXTTXT
BLKBLKBLK
harus dikeluarkan 1
karena bentuk program mewakili iterasi pertama karpet Sierpinski.
Begitu pula berlari
TXTTXTTXTTXTTXTTXTTXTTXTTXT
BLKBLKBLKBLKBLKBLKBLKBLKBLK
TXT TXTTXT TXTTXT TXT
BLK BLKBLK BLKBLK BLK
TXTTXTTXTTXTTXTTXTTXTTXTTXT
BLKBLKBLKBLKBLKBLKBLKBLKBLK
TXTTXTTXT TXTTXTTXT
BLKBLKBLK BLKBLKBLK
TXT TXT TXT TXT
BLK BLK BLK BLK
TXTTXTTXT TXTTXTTXT
BLKBLKBLK BLKBLKBLK
TXTTXTTXTTXTTXTTXTTXTTXTTXT
BLKBLKBLKBLKBLKBLKBLKBLKBLK
TXT TXTTXT TXTTXT TXT
BLK BLKBLK BLKBLK BLK
TXTTXTTXTTXTTXTTXTTXTTXTTXT
BLKBLKBLKBLKBLKBLKBLKBLKBLK
harus menampilkan 2 karena ini adalah bentuk iterasi karpet Sierpinski kedua.
Menjalankan blok teks apa adanya
TXT
BLK
harus dikeluarkan 0
karena dapat dianggap iterasi nol.
Ini harus bekerja untuk semua iterasi lebih lanjut. (Setidaknya secara teoritis, anggap komputer memiliki memori dan semuanya.)
Detail
- Program mungkin tidak membaca atau mengakses informasi tentang kode sumbernya. Perlakukan ini seperti tantangan quine yang ketat.
- Output menuju ke stdout atau alternatif serupa. Hanya menampilkan nomor dan baris tambahan opsional. Tidak ada input.
- Blok teks dapat berisi karakter apa pun yang tidak dianggap sebagai terminator garis . Blok teks dapat berisi spasi.
- "Ruang kosong" di karpet harus seluruhnya terdiri dari karakter ruang .
- Anda dapat mengasumsikan bahwa semua program memiliki baris tambahan.
Anda dapat menggunakan potongan tumpukan ini untuk menghasilkan karpet untuk blok teks yang diberikan di setiap iterasi:
<style>#o,#i{font-family:monospace;}</style><script>function c(e){e=e.split("\n");for(var n=new Array(3*e.length),t=0;t<n.length;t++){var l=t%e.length;n[t]=e[l]+(t>=e.length&&t<2*e.length?e[l].replace(/./g," "):e[l])+e[l]}return n.join("\n")}function f(){for(i=document.getElementById("i").value,n=parseInt(document.getElementById("n").value);n>0;)i=c(i),n--;document.getElementById("o").value=i}</script><textarea id='i'placeholder='code block...'rows='8'cols='32'></textarea><br>Iterations <input id='n'type='text' value='1'><br><br><button type='button'onclick='f()'>Generate</button><br><br><textarea id='o'placeholder='output...'rows='8'cols='32'style='background-color:#eee'readonly></textarea>
Mencetak gol
Kiriman yang blok teks awalnya terkecil menurut area (lebar kali tinggi) adalah pemenangnya. The TXT\nBLK
contoh adalah 3 oleh 2 untuk skor 6. (Pada dasarnya menang kode terpendek, maka tag kode-golf.)
Tiebreaker pergi ke kiriman yang menggunakan karakter berbeda paling sedikit dalam blok teks mereka. Jika masih terikat, jawab diposting kemenangan pertama.