İngilizce ve çoğu programlama dili, soldan sağa, yukarıdan aşağıya doğru yazılır ve okunur, ancak böyle olması gerekmez .
Aslında metin bloğu için
ABC
DEF
Okunabilecek sekiz ilgili yol düşünebilirim:
- Soldan sağa, yukarıdan aşağıya (LTR-TTB):
ABCDEF
- Yukarıdan aşağıya, soldan sağa (TTB-LTR):
ADBECF
- Soldan sağa, aşağıdan yukarıya (LTR-BTT):
DEFABC
- Aşağıdan yukarıya, soldan sağa (BTT-LTR):
DAEBFC
- Sağdan sola, yukarıdan aşağıya (RTL-TTB):
CBAFED
- Yukarıdan aşağıya, sağdan sola (TTB-RTL):
CFBEAD
- Sağdan sola, aşağıdan yukarıya (RTL-BTT):
FEDCBA
- Aşağıdan yukarıya, sağdan sola (BTT-RTL):
FCEBDA
Meydan okuma
Seçtiğiniz dilde sekiz tek satırlık program olarak yukarıdaki sekiz yoldan her birinde okunabilen dikdörtgen bir metin bloğu yazın . Bu programların her biri sekizden farklı bir tam sayı çıkarmalıdır.
Hangi okuma yönünün hangi sayıya çıktığı önemli değildir, yukarıdaki sayıların eşleşmesi gerekmez. Örneğin, metin bloğunuz hala
ABC
DEF
Daha sonra program, ABCDEF
kudreti çıkışı 5
ve FEDCBA
kudreti çıkışı 2
ve diğer altı programları çıktılayacaktır 1
, 3
, 4
, 6
, 7
, ve 8
bazı sırayla.
Metin bloğu, satır sonlandırıcılar dışında herhangi bir karakter içerebilir .
Dilinizde uygun bir stdout yoksa, çıktı stdout'a veya benzer bir alternatife gitmelidir. Giriş yok. Programların bir REPL ortamında çalıştırıldığını varsayabilirsiniz.
Pietu1998 , bir metin bloğu verildiğinde 8 farklı tek satırlık programı veren bir JSFiddle yazdı . Bir yığın pasajı haline getirdim:
<script>function f(n){n=n.split("\n");var e=n.map(function(n){return n.length}).sort()[n.length-1];n=n.map(function(n){return(n+Array(e+1).join(" ")).substring(0,e)});var t=n[0].split("").map(function(e,t){return n.map(function(n){return n[t]}).join("")});n=[n.join(""),n.reverse().join(""),t.join(""),t.reverse().join("")],n=n.concat(n.map(function(n){return n.split("").reverse().join("")})),document.getElementById("a").innerHTML=n.map(function(n,e){return document.getElementById("b").checked?n+" "+"LLTTRRBB"[e]+"T"+"RRBBLLTT"[e]+"-"+"TBLRBTRL"[e]+"T"+"BTRLTBLR"[e]:n}).join("\n")}</script><textarea onkeyup="f(this.value)" id="c" placeholder="Code"></textarea><br/><input type="checkbox" id="b" onchange="f(document.getElementById('c').value)" checked/> <label for="b">Show directions</label><br/><pre id="a"></pre>
Martin'in CJam sürümünü hala burada bulabilirsiniz .
puanlama
Puanınız, metin bloğunuzun alanıdır (genişlik, yüksekliktir). En düşük puanla yapılan gönderim kazanır. (Temel olarak en küçük kod kazanır, bu nedenle kod-golf etiketi.) Tiebreaker daha önce gönderilen gönderilere gider.
Örnek 2'ye 3'tür, bu nedenle skoru 6'dır. 4'ten küçük bir skor (2'ye 2) imkansızdır, çünkü o zaman 8 programdan bazıları aynı olacaktır ve iki farklı değer verememiştir.
String.prototype.repeat()
göre hala yeni. Ayrıca şimdi IE’de çalıştığını doğruladı. yeni keman