Napisz prostokątny blok tekstu, który po ułożeniu w dywanie Sierpińskiego , używając bloków o tej samej wielkości dla pustych części, tworzy program, który wyświetla numer iteracji dywanu.
Na przykład, jeśli masz blok tekstowy
TXT
BLK
następnie uruchom program
TXTTXTTXT
BLKBLKBLK
TXT TXT
BLK BLK
TXTTXTTXT
BLKBLKBLK
powinien wyjść, 1
ponieważ kształt programu reprezentuje pierwszą iterację dywanu Sierpińskiego.
Podobnie działa
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
powinien wypisać 2, ponieważ jest to kształt drugiej iteracji dywanu Sierpińskiego.
Uruchamianie bloku tekstu bez zmian
TXT
BLK
powinien generować, 0
ponieważ można to uznać za iterację zerową.
Powinno to działać dla wszystkich dalszych iteracji. (Przynajmniej teoretycznie, zakładając, że komputer ma pamięć i wszystko.)
Detale
- Programy nie mogą czytać ani uzyskiwać dostępu do informacji o kodzie źródłowym. Traktuj to jak surowe wyzwanie quine.
- Dane wyjściowe trafiają do standardowej lub podobnej alternatywy. Podaj tylko liczbę i opcjonalny znak nowej linii. Brak danych wejściowych.
- Blok tekstowy może zawierać dowolne znaki, które nie są uważane za terminatory linii . Blok tekstowy może zawierać spacje.
- „Pusta przestrzeń” na dywanie musi składać się wyłącznie ze znaków spacji .
- Opcjonalnie możesz założyć, że wszystkie programy mają końcowy znak nowej linii.
Możesz użyć tego fragmentu stosu do wygenerowania dywanu dla danego bloku tekstu w dowolnej iteracji:
<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>
Punktacja
Zwycięzcą jest zgłoszenie, którego początkowy blok tekstowy jest najmniejszy pod względem obszaru (szerokość razy wysokość). TXT\nBLK
Przykładem jest 3 od 2 do 6. (wynik w zasadzie najkrótszej wygranych kod, tym samym znacznikiem kod golfa).
Tiebreaker przechodzi do zgłoszenia, w którym w bloku tekstu jest najmniej różnych znaków. Jeśli nadal jest remis, odpowiedź opublikowana jako pierwsza wygrywa.