Berikut ini adalah font 5 oleh 7 piksel untuk digit 0 hingga 9:
.███.
█...█
█...█
█...█
█...█
█...█
.███.
..█..
███..
..█..
..█..
..█..
..█..
█████
.███.
█...█
....█
...█.
..█..
.█...
█████
.███.
█...█
....█
..██.
....█
█...█
.███.
█..█.
█..█.
█..█.
█████
...█.
...█.
...█.
█████
█....
█....
.███.
....█
█...█
.███.
.███.
█...█
█....
████.
█...█
█...█
.███.
█████
....█
....█
...█.
...█.
..█..
..█..
.███.
█...█
█...█
.███.
█...█
█...█
.███.
.███.
█...█
█...█
.████
....█
█...█
.███.
(Font ini dan halaman ini mungkin akan terlihat lebih baik jika Anda menjalankan kode JavaScipt ini di konsol browser Anda atau di bilah URL yang diawali oleh javascript:
:. $('#question pre,.answer pre').css('line-height',1)
)
Tulis dua blok persegi panjang teks berukuran sama, satu untuk merepresentasikan spasi kosong ( .
) pada font di atas, dan satu untuk merepresentasikan spasi yang diisi ( █
).
Ketika dua blok teks ini diatur dalam pola 5 × 7 yang sama dengan salah satu digit di atas, maka blok teks besar yang dihasilkan harus berupa program yang mencetak digit itu ke stdout. Ini harus bekerja untuk semua 10 digit.
Misalnya, jika .
blok teks Anda adalah
---
'''
dan █
blok teks Anda tadinya
ABC
123
lalu programnya
---ABCABCABC---
'''123123123'''
ABC---------ABC
123'''''''''123
ABC---------ABC
123'''''''''123
ABC---------ABC
123'''''''''123
ABC---------ABC
123'''''''''123
ABC---------ABC
123'''''''''123
---ABCABCABC---
'''123123123'''
harus keluar 0
. Begitu pula dengan programnya
------ABC------
''''''123''''''
ABCABCABC------
123123123''''''
------ABC------
''''''123''''''
------ABC------
''''''123''''''
------ABC------
''''''123''''''
------ABC------
''''''123''''''
ABCABCABCABCABC
123123123123123
harus menampilkan 1
, dan seterusnya hingga program untuk 9
.
Anda dapat menggunakan potongan stack ini untuk membuat program berbentuk digit:
<style>textarea{font-family:monospace;}</style><script>function go(){var t=parseInt(document.getElementById("digit").value[0]);if(isNaN(t))return void alert("Invalid digit.");for(var e=document.getElementById("empty").value.split("\n"),n=document.getElementById("filled").value.split("\n"),l=[],o=0;o<7*e.length;o++){l[o]="";for(var d=0;5>d;d++)l[o]+=font[t][Math.floor(o/e.length)][d]?n[o%n.length]:e[o%e.length]}document.getElementById("output").value=l.join("\n")}font=[[[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]],[[0,0,1,0,0],[1,1,1,0,0],[0,0,1,0,0],[0,0,1,0,0],[0,0,1,0,0],[0,0,1,0,0],[1,1,1,1,1]],[[0,1,1,1,0],[1,0,0,0,1],[0,0,0,0,1],[0,0,0,1,0],[0,0,1,0,0],[0,1,0,0,0],[1,1,1,1,1]],[[0,1,1,1,0],[1,0,0,0,1],[0,0,0,0,1],[0,0,1,1,0],[0,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]],[[1,0,0,1,0],[1,0,0,1,0],[1,0,0,1,0],[1,1,1,1,1],[0,0,0,1,0],[0,0,0,1,0],[0,0,0,1,0]],[[1,1,1,1,1],[1,0,0,0,0],[1,0,0,0,0],[0,1,1,1,0],[0,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]],[[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,0],[1,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]],[[1,1,1,1,1],[0,0,0,0,1],[0,0,0,0,1],[0,0,0,1,0],[0,0,0,1,0],[0,0,1,0,0],[0,0,1,0,0]],[[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]],[[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,1],[0,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]]]</script><textarea id='empty' rows='8' cols='32' placeholder='empty space text block...'></textarea><textarea id='filled' rows='8' cols='32' placeholder='filled space text block...'></textarea><br>Digit <input id='digit' type='text' value='0'> <button type='button' onclick='go()'>Generate</button><br><br><textarea id='output' rows='16' cols='64' placeholder='output...' style='background-color: #eee;' readonly></textarea>
Detail
- Tak satu pun dari 10 program blok teks besar harus memerlukan input. Hanya menampilkan satu digit plus satu baris tambahan opsional. Output ke stdout atau alternatif serupa.
- Tidak ada program yang dapat membaca atau mengakses kode sumbernya sendiri. Perlakukan ini seperti tantangan quine yang ketat .
- Blok teks mungkin tidak identik dan harus memiliki dimensi bukan nol.
- Blok teks dapat berisi karakter apa pun kecuali terminator baris .
- 10 program harus merupakan program lengkap yang ditulis dalam bahasa yang sama, mereka bukan cuplikan REPL . Anda dapat secara opsional menambahkan trailing newline ke semuanya atau tidak sama sekali.
Mencetak gol
Skor Anda adalah area (tinggi kali tinggi) dari salah satu blok teks Anda. (Mereka memiliki ukuran yang sama sehingga tidak ada gunanya menghitung kedua blok.) Area contoh ini adalah 3 dengan 2, untuk skor 6.
Skor terendah menang. Dalam hal ikatan, jawaban yang terpilih tertinggi menang.
text blocks may not be identical
sangat? Saya ingin melihat seseorang melanggar aturan ini, dengan memberikan dua kode kunci yang identik, yang secara ajaib mengembalikan angka yang berbeda, ketika setiap angka persis kode yang sama ^^
var t=parseInt(document.getElementById("digit").value[0]);if(isNaN(t))return void alert("Invalid digit.");
dapat ditulis sebagaivar t=document.getElementById("digit").value[0]/1;if(t!=t)return void alert("Invalid digit.");
, yang sama tetapi lebih pendek. Ada beberapa hal lagi yang dapat Anda tingkatkan di dalamnya, tetapi itu memang terlihat hebat!