12
以8种方式读取代码以输出8个数字
英语和大多数编程语言都是从左到右,从上到下编写和读取的,但并非必须如此。 实际上对于文本块 ABC DEF 我可以想到八种相关的阅读方式: 从左到右,从上到下(LTR-TTB): ABCDEF 从上到下,从左到右(TTB-LTR): ADBECF 从左到右,从下到上(LTR-BTT): DEFABC 从下到上,从左到右(BTT-LTR): DAEBFC 从右到左,从上到下(RTL-TTB): CBAFED 从上到下,从右到左(TTB-RTL): CFBEAD 从右到左,从下到上(RTL-BTT): FEDCBA 从下到上,从右到左(BTT-RTL): FCEBDA 挑战 编写一个矩形的文本块,以您选择的语言将其作为八个单行程序以上述八种方式读取。这些程序中的每一个都应输出一个从1到8的不同整数。 哪个读取方向输出哪个数字都没有关系,它们不必与上面的数字匹配。例如,如果您的文本块仍然 ABC DEF 然后该程序ABCDEF可能输出5和FEDCBA力量输出2,而其他六个方案将输出1,3,4,6,7,和8一些秩序。 文本块可以包含除行终止符之外的任何字符。 如果您的语言没有正确的标准输出,则输出应转到标准输出或类似的替代方法。没有输入。您可能会假定程序在REPL环境中运行。 Pietu1998慈善地编写了一个JSFiddle,当给出一段文本时,它给出了8种不同的单行程序。我已经将其放入堆栈片段中: <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/>&nbsp;<label for="b">Show directions</label><br/><pre …