Ось пікселізований шрифт від 5 до 7 для цифр від 0 до 9:
.███.
█...█
█...█
█...█
█...█
█...█
.███.
..█..
███..
..█..
..█..
..█..
..█..
█████
.███.
█...█
....█
...█.
..█..
.█...
█████
.███.
█...█
....█
..██.
....█
█...█
.███.
█..█.
█..█.
█..█.
█████
...█.
...█.
...█.
█████
█....
█....
.███.
....█
█...█
.███.
.███.
█...█
█....
████.
█...█
█...█
.███.
█████
....█
....█
...█.
...█.
..█..
..█..
.███.
█...█
█...█
.███.
█...█
█...█
.███.
.███.
█...█
█...█
.████
....█
█...█
.███.
(Цей шрифт і ця сторінка, ймовірно, будуть виглядати краще, якщо ви запускаєте цей код JavaScipt у консолі браузера або в рядку URL-адреси з префіксом javascript:
:. $('#question pre,.answer pre').css('line-height',1)
)
Напишіть два прямокутні блоки тексту рівного розміру, один для зображення порожніх пробілів ( .
) у шрифті вище, а один для заповнення пробілів ( █
).
Коли ці два текстові блоки розташовані у тому самому шарі 5 × 7, що і одна з цифр вище, то в результаті великий великий текстовий блок повинен бути програмою, яка друкує цю цифру для stdout. Це має працювати для всіх 10 цифр.
Наприклад, якщо ваш .
текстовий блок був
---
'''
і ваш █
текстовий блок був
ABC
123
потім програма
---ABCABCABC---
'''123123123'''
ABC---------ABC
123'''''''''123
ABC---------ABC
123'''''''''123
ABC---------ABC
123'''''''''123
ABC---------ABC
123'''''''''123
ABC---------ABC
123'''''''''123
---ABCABCABC---
'''123123123'''
повинен вивести 0
. Аналогічно програма
------ABC------
''''''123''''''
ABCABCABC------
123123123''''''
------ABC------
''''''123''''''
------ABC------
''''''123''''''
------ABC------
''''''123''''''
------ABC------
''''''123''''''
ABCABCABCABCABC
123123123123123
повинен виводити 1
і так далі до програми для 9
.
Ви можете використовувати цей фрагмент стека, щоб зробити програми з цифровою формою:
<style>textarea{font-family:monospace;}</style><script>function go(){var t=parseInt(document.getElementById("digit").value[0]);if(isNaN(t))return void alert("Invalid digit.");for(var e=document.getElementById("empty").value.split("\n"),n=document.getElementById("filled").value.split("\n"),l=[],o=0;o<7*e.length;o++){l[o]="";for(var d=0;5>d;d++)l[o]+=font[t][Math.floor(o/e.length)][d]?n[o%n.length]:e[o%e.length]}document.getElementById("output").value=l.join("\n")}font=[[[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]],[[0,0,1,0,0],[1,1,1,0,0],[0,0,1,0,0],[0,0,1,0,0],[0,0,1,0,0],[0,0,1,0,0],[1,1,1,1,1]],[[0,1,1,1,0],[1,0,0,0,1],[0,0,0,0,1],[0,0,0,1,0],[0,0,1,0,0],[0,1,0,0,0],[1,1,1,1,1]],[[0,1,1,1,0],[1,0,0,0,1],[0,0,0,0,1],[0,0,1,1,0],[0,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]],[[1,0,0,1,0],[1,0,0,1,0],[1,0,0,1,0],[1,1,1,1,1],[0,0,0,1,0],[0,0,0,1,0],[0,0,0,1,0]],[[1,1,1,1,1],[1,0,0,0,0],[1,0,0,0,0],[0,1,1,1,0],[0,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]],[[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,0],[1,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]],[[1,1,1,1,1],[0,0,0,0,1],[0,0,0,0,1],[0,0,0,1,0],[0,0,0,1,0],[0,0,1,0,0],[0,0,1,0,0]],[[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]],[[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,1],[0,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]]]</script><textarea id='empty' rows='8' cols='32' placeholder='empty space text block...'></textarea><textarea id='filled' rows='8' cols='32' placeholder='filled space text block...'></textarea><br>Digit <input id='digit' type='text' value='0'> <button type='button' onclick='go()'>Generate</button><br><br><textarea id='output' rows='16' cols='64' placeholder='output...' style='background-color: #eee;' readonly></textarea>
Деталі
- Жодна з 10 великих програм текстового блоку не потребує введення. Виведіть лише одну цифру плюс необов'язковий кінцевий новий рядок. Вихід до stdout або подібної альтернативи.
- Жодна з програм не може читати або отримати доступ до власного вихідного коду. Ставтесь до цього, як до суворої проблеми з королевою .
- Текстові блоки можуть бути не тотожними і повинні мати ненульові розміри.
- Текстові блоки можуть містити будь-які символи, крім терміналів рядків .
- 10 програм повинні бути повноцінними програмами, написаними однією мовою, вони не є фрагментами REPL . Ви можете за бажанням додати зворотний новий рядок до всіх або жодної.
Оцінка балів
Ваш результат - це площа (ширина разів висота) одного з ваших текстових блоків. (Вони однакового розміру, тому немає сенсу рахувати обидва блоки.) Площа прикладу - 3 на 2, для оцінки 6.
Виграє найнижчий бал. У разі зв’язків, виграє відповідь, що найбільше голосує.
text blocks may not be identical
справді? Я хочу, щоб хтось порушив це правило, давши два однакові кодові блоки, які магічно повертають різні цифри, коли кожне число точно такий же код ^^
var t=parseInt(document.getElementById("digit").value[0]);if(isNaN(t))return void alert("Invalid digit.");
можна записати якvar t=document.getElementById("digit").value[0]/1;if(t!=t)return void alert("Invalid digit.");
, що однаково, але коротше. Є ще кілька речей, які ви можете вдосконалити, але це виглядає чудово!