İşte 0'dan 9'a kadar olan rakamlar için 5 x 7 puntolu:
.███.
█...█
█...█
█...█
█...█
█...█
.███.
..█..
███..
..█..
..█..
..█..
..█..
█████
.███.
█...█
....█
...█.
..█..
.█...
█████
.███.
█...█
....█
..██.
....█
█...█
.███.
█..█.
█..█.
█..█.
█████
...█.
...█.
...█.
█████
█....
█....
.███.
....█
█...█
.███.
.███.
█...█
█....
████.
█...█
█...█
.███.
█████
....█
....█
...█.
...█.
..█..
..█..
.███.
█...█
█...█
.███.
█...█
█...█
.███.
.███.
█...█
█...█
.████
....█
█...█
.███.
(Bu yazı ve size tarayıcılar konsolunda veya önek URL çubuğunda bu JavaScript kodu çalıştırırsanız bu sayfa muhtemelen daha iyi görünecektir javascript:
: $('#question pre,.answer pre').css('line-height',1)
.)
Biri .
yukarıdaki fonttaki boş boşlukları ( ) temsil etmek için diğeri de doldurulmuş boşlukları ( █
) temsil etmek için iki eşit boyutlu dikdörtgen blok metni yazın .
Bu iki metin bloğu yukarıdaki rakamlardan biri ile aynı 5 × 7 desene göre düzenlendiğinde, ortaya çıkan büyük metin bloğu o basamağı stdout'a basan bir program olmalıdır. Bu, 10 hane için çalışmalıdır.
Örneğin, .
metin bloğunuz
---
'''
ve █
metin bloğunuz
ABC
123
sonra program
---ABCABCABC---
'''123123123'''
ABC---------ABC
123'''''''''123
ABC---------ABC
123'''''''''123
ABC---------ABC
123'''''''''123
ABC---------ABC
123'''''''''123
ABC---------ABC
123'''''''''123
---ABCABCABC---
'''123123123'''
çıkmalı 0
. Benzer şekilde, program
------ABC------
''''''123''''''
ABCABCABC------
123123123''''''
------ABC------
''''''123''''''
------ABC------
''''''123''''''
------ABC------
''''''123''''''
------ABC------
''''''123''''''
ABCABCABCABCABC
123123123123123
çıktı 1
için program vb. kadar olmalıdır 9
.
Rakam şeklindeki programları yapmak için bu yığın pasajını kullanabilirsiniz:
<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>
ayrıntılar
- 10 büyük metin bloğu programından hiçbiri giriş gerektirmemelidir. Sadece tek rakamın yanı sıra isteğe bağlı son satırın çıktısını alın. Stdout'a veya benzer bir alternatife çıktı.
- Programların hiçbiri kendi kaynak kodunu okuyamıyor veya erişemiyor. Sıkı gibi bu tedavi quine meydan.
- Metin blokları aynı olmayabilir ve sıfır olmayan boyutlara sahip olmalıdır.
- Metin blokları, satır sonlandırıcılar dışında herhangi bir karakter içerebilir .
- 10 program aynı dilde yazılmış tam teşekküllü programlar olmalıdır, bunlar REPL kodları değildir . İsteğe bağlı olarak, hepsine veya hiçbirine izleyen bir yeni satır ekleyebilirsiniz.
puanlama
Puanınız, metin bloklarınızdan birinin alanıdır (genişlik zaman yüksekliği). (Aynı boyuttadırlar, bu yüzden her iki bloğu da saymanın bir anlamı yoktur.) Örneğin alanı 6'ya göre 3'e 2'dir.
En düşük puan kazanır. Bağlanma durumunda, en yüksek oyu alan cevap kazanır.
text blocks may not be identical
Gerçekten mi? Birinin bu kuralı ihlal ettiğini görmek istiyorum, her biri tamamen aynı kod olduğunda sihirli bir şekilde farklı rakamlar döndüren iki aynı kod bloğu vererek ^ ^
var t=parseInt(document.getElementById("digit").value[0]);if(isNaN(t))return void alert("Invalid digit.");
gibi yazılabilirvar t=document.getElementById("digit").value[0]/1;if(t!=t)return void alert("Invalid digit.");
. Geliştirebileceğin birkaç şey var, ama harika gözüküyor!