英語とほとんどのプログラミング言語は、左から右、上から下に書かれ、読まれますが、そうである必要はありません。
実際、テキストのブロック用
ABC
DEF
関連する8つの読み方を考えることができます。
- 左から右、上から下(LTR-TTB):
ABCDEF
- 上から下、左から右(TTB-LTR):
ADBECF
- 左から右、下から上(LTR-BTT):
DEFABC
- 下から上、左から右(BTT-LTR):
DAEBFC
- 右から左、上から下(RTL-TTB):
CBAFED
- 上から下、右から左(TTB-RTL):
CFBEAD
- 右から左、下から上(RTL-BTT):
FEDCBA
- 下から上、右から左(BTT-RTL):
FCEBDA
チャレンジ
選択した言語の8つの単一行プログラムとして、上記の8つの方法のそれぞれで読み取れる長方形のテキストブロックを記述します。これらのプログラムはそれぞれ、1〜8の異なる整数を出力する必要があります。
どの読み取り方向がどの番号を出力するかは問題ではなく、上記の番号と一致する必要はありません。たとえば、テキストブロックがまだ
ABC
DEF
その後、プログラムのABCDEF
かもしれない出力5
とFEDCBA
かもしれない出力2
、および他の6つのプログラムが出力だろう1
、3
、4
、6
、7
、および8
いくつかのためです。
テキストブロックには、行末記号以外の文字を含めることができます。
言語に適切な標準出力がない場合、出力は標準出力または同様の代替になります。入力はありません。プログラムはREPL環境で実行されていると想定できます。
Pietu1998は、テキストブロックが与えられたときに8つの異なる単一行プログラムを提供するJSFiddleを慈善的に作成しました。スタックスニペットにしました。
<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の CJamバージョンをここで見つけることができます。
得点
スコアは、テキストブロックの領域(幅×高さ)です。最低スコアの提出が勝ちです。(本質的に最小のコードが勝つため、code-golfタグが使用されます。)Tiebreakerは以前に投稿された投稿に移動します。
例は2 x 3なので、スコアは6です。4(2 x 2)未満のスコアは不可能です。8つのプログラムの一部が同一であり、2つの異なる値を出力できなかったためです。
String.prototype.repeat()
まだ新しいようです。IEで動作することも確認されました。新しいフィドル