Scrivi un blocco di testo rettangolare che, quando disposto in un tappeto Sierpinski , usando blocchi di spazi della stessa dimensione per le porzioni vuote, crea un programma che genera il numero di iterazione del tappeto.
Ad esempio, se il blocco di testo è
TXT
BLK
quindi eseguendo il programma
TXTTXTTXT
BLKBLKBLK
TXT TXT
BLK BLK
TXTTXTTXT
BLKBLKBLK
dovrebbe uscire 1
perché la forma del programma rappresenta la prima iterazione del tappeto Sierpinski.
Allo stesso modo, correndo
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
dovrebbe produrre 2 perché questa è la forma della seconda iterazione del tappeto Sierpinski.
Esecuzione del blocco di testo così com'è
TXT
BLK
dovrebbe essere prodotto 0
perché può essere considerato l'iterazione zeroth.
Questo dovrebbe funzionare per tutte le ulteriori iterazioni. (Almeno in teoria, supponendo che il computer abbia la memoria e tutto il resto.)
Dettagli
- I programmi non possono leggere o accedere alle informazioni sul loro codice sorgente. Trattalo come una sfida rigorosa.
- L'output passa a stdout o alternativa simile. Emette solo il numero e una nuova riga finale facoltativa. Non ci sono input.
- Il blocco di testo può contenere caratteri che non sono considerati terminatori di riga . Il blocco di testo può contenere spazi.
- Lo "spazio vuoto" nel tappeto deve consistere interamente di caratteri spaziali .
- Puoi facoltativamente supporre che tutti i programmi abbiano una nuova riga finale.
Puoi utilizzare questo frammento di stack per generare un tappeto per un determinato blocco di testo in qualsiasi iterazione:
<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>
punteggio
La proposta il cui blocco di testo iniziale è il più piccolo per area (larghezza per altezza) è il vincitore. L' TXT\nBLK
esempio è 3 per 2 per un punteggio di 6. (Fondamentalmente vince il codice più corto, quindi il tag code-golf.)
Tiebreaker va alla presentazione che utilizza il minor numero di caratteri distinti nel loro blocco di testo. Se ancora in parità, la risposta pubblicata per prima vince.