Bahasa Inggris dan sebagian besar bahasa pemrograman ditulis dan dibaca dari kiri ke kanan, dari atas ke bawah, tetapi tidak harus demikian .
Bahkan untuk blok teks
ABC
DEF
Saya dapat memikirkan delapan cara terkait yang bisa dibaca:
- Kiri-ke-kanan, atas-bawah (LTR-TTB):
ABCDEF
- Atas-ke-bawah, dari kiri ke kanan (TTB-LTR):
ADBECF
- Kiri-ke-kanan, bawah-ke-atas (LTR-BTT):
DEFABC
- Bawah-ke-atas, kiri-ke-kanan (BTT-LTR):
DAEBFC
- RTL-TTB kanan-ke-kiri, atas-ke-bawah:
CBAFED
- Atas-ke-bawah, kanan-ke-kiri (TTB-RTL):
CFBEAD
- RTL-BTT kanan-ke-kiri, bawah-ke-atas:
FEDCBA
- Bawah-ke-atas, kanan-ke-kiri (BTT-RTL):
FCEBDA
Tantangan
Tulis blok teks segi empat yang dapat dibaca di masing-masing dari delapan cara di atas sebagai delapan program baris tunggal dalam bahasa pilihan Anda. Masing-masing program harus menghasilkan bilangan bulat yang berbeda dari satu hingga delapan.
Tidak masalah arah bacaan mana yang menghasilkan angka, mereka tidak harus cocok dengan angka di atas. Misalnya, jika blok teks Anda masih
ABC
DEF
maka program ABCDEF
keluaran kekuatan 5
dan FEDCBA
keluaran kekuatan 2
, dan enam program lain akan output 1
, 3
, 4
, 6
, 7
, dan 8
dalam beberapa urutan.
Blok teks dapat berisi karakter apa pun kecuali terminator baris .
Output harus pergi ke stdout atau alternatif serupa jika bahasa Anda tidak memiliki stdout yang tepat. Tidak ada input. Anda dapat menganggap program dijalankan dalam lingkungan REPL.
Pietu1998 menulis JSFiddle yang memberikan 8 program baris tunggal yang berbeda ketika diberi satu blok teks. Saya telah membuatnya menjadi potongan stack:
<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>
Anda masih dapat menemukan versi CJam Martin di sini .
Mencetak gol
Skor Anda adalah area blok teks Anda (lebar dikalikan tinggi). Pengajuan dengan skor terendah akan menang. (Intinya kode terkecil menang, maka tag kode-golf .) Tiebreak pergi ke kiriman yang diposting sebelumnya.
Contohnya adalah 2 oleh 3 sehingga nilainya adalah 6. Skor kurang dari 4 (2 oleh 2) tidak mungkin karena beberapa dari 8 program akan sama dan tidak dapat menghasilkan dua nilai yang berbeda.
String.prototype.repeat()
masih agak baru. Juga dikonfirmasi untuk bekerja di IE sekarang. biola baru