Англійська мова та більшість мов програмування пишуться та читаються зліва направо, зверху вниз, але це не повинно бути так .
Фактично для блоку тексту
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
Виклик
Напишіть прямокутний блок тексту, який можна прочитати кожним із восьми способів, як вісім однорядкових програм на вашій мові. Кожна з цих програм повинна виводити інше ціле число від одного до восьми.
Не має значення, який напрямок читання виводить, яке число, вони не повинні відповідати числам вище. Наприклад, якщо ваш текстовий блок все ще був
ABC
DEF
то програма ABCDEF
виведення може 5
і FEDCBA
висновок може 2
, й інші шість програм буде виводити 1
, 3
, 4
, 6
, 7
, і 8
в деякому порядку.
Текстовий блок може містити будь-які символи, крім терміналів рядків .
Вихід повинен переходити до stdout або подібної альтернативи, якщо у вашій мові немає належної версії. Введення немає. Ви можете припустити, що програми запускаються в середовищі 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/> <label for="b">Show directions</label><br/><pre id="a"></pre>
Ви все ще можете знайти версію CJam Мартіна тут .
Оцінка балів
Ваш результат - це область вашого блоку тексту (ширина, яка перевищує висоту). Виграє подання з найменшим балом. (По суті, найменший код виграє, отже, код-гольф тег .) Tiebreaker переходить до раніше опублікованого подання.
Приклад - 2 на 3, тому його оцінка становить 6. Оцінка менше 4 (2 на 2) неможлива, оскільки тоді деякі з 8 програм були б ідентичними і не могли вивести два різних значення.
String.prototype.repeat()
, все одно щось нове. Також підтверджено, що зараз працює в IE. нова скрипка