вступление
В большинстве шрифтов всех символов верхнего регистра алфавита , кроме BDO
одинарных линий приблизительно трогательных некоторые из четырех углов ограничивающего прямоугольника персонажа: ACEFGHIJKLMNPQRSTUVWXYZ
.
Например, две ноги A
«касаются» нижнего левого и нижнего правого углов персонажа. Аналогично, C
касается его верхнего и нижнего правых углов (он немного изогнут, но достаточно близко). L
касаются только его верхнего левого и нижнего правого углов одинарными линиями. Нижний левый угол L
- это вершина, а не конец одной линии.
Вот таблица того, какие символы касаются каких углов в соответствии со шрифтом Stack Exchange, который я (и, надеюсь, вы) видите. 1
для верхнего левого угла, 2
для верхнего правого, 3
нижнего левого, 4
нижнего правого.
A: 3 4
C: 2 4
E: 2 4
F: 2 3
G: 2
H: 1 2 3 4
I: 1 2 3 4
J: 1 3
K: 1 2 3 4
L: 1 4
M: 3 4
N: 2 3
P: 3
Q: 4
R: 3 4
S: 2 3
T: 1 2
U: 1 2
V: 1 2
W: 1 2
X: 1 2 3 4
Y: 1 2
Z: 1 4
Настроить
Представьте, что эти линии касания угла проходят в направлении касания угла, так что расположение этих символов на сетке может быть «связано».
Например, все символы в
A
C X
связаны, потому что нижний левый A
и верхний правый от C
подключения, а нижний правый A
и верхний левый от X
подключения.
Тем не мение,
CAX
не имеет соединений, потому что соединения происходят только по диагонали от одного символа к другому .
Вызов
Напишите самую короткую возможную программу (в байтах), которая выводит все символы ACEFGHIJKLMNPQRSTUVWXYZ
в одном большом полностью связанном дереве в соответствии с приведенными выше правилами. Каждый персонаж должен появиться ровно один раз. Используйте пробелы для пустого пространства.
пример
Все в этом 23-буквенном дереве может быть достигнуто из чего-либо еще через диагональные связи, определенные выше:
Q
A J R
C U S Y
I M N
E H X
F L T
G Z K P
V W
Примечания
- Вы можете жестко закодировать свое решение.
- Ваш вывод должен содержать только
ACEFGHIJKLMNPQRSTUVWXYZ
пробелы и переводы строк.BDO
не будет использоваться. - Начальные / конечные пробелы хороши, если все соединения расположены правильно.
- Выходная сетка не должна быть больше 30 на 30 символов (включая переводы строки и пробелы).
- Рассматриваются только угловые соединения. Дно
Y
ни к чему не подключается. Вы должны использовать угловые соединения из таблицы выше. - Не все соединяемые углы нужно подключать к чему-либо. Соединяемые и не соединяемые углы могут граничить друг с другом.
- Вывод на стандартный вывод. Там нет ввода.
- Включение графа связности, сделанного с косыми чертами, как это сделал Питер Тейлор , является полезным штрихом, но не обязательным.
Обновление:
githubhagocyte сделал проверку достоверности дерева алфавитов на Github .
источник
Ответы:
Пиф , 32
Выход:
Соединения, благодаря контролеру @ githubphagocyte:
Объединяет трюк с нулевым байтом @ grc и чрезвычайно короткий синтаксис Pyth. Сделал мою собственную сетку для ада этого.
Объяснение:
j
является строкой соединения Python.d
это пространство.\0
является escape-последовательностью для нулевого байта. Это NOP при печати, поэтому третья строка имеет ровно два пробела впереди. Также обратите внимание, что строки могут заканчиваться EOL в Pyth, а также заканчиваться кавычками.источник
GolfScript (41 символ)
Онлайн демо
График подключения:
источник
Python, 49
Пример:
Я думаю, что теперь все правильно, но я, возможно, снова что-то пропустил.
источник
F4
выглядит связано сG1
, что является недействительнымMarbelous
164158143использовал дерево bmarks, так как оно почти идеально оптимизировано для Marbelous . Код в данном случае - это просто коды ascci для всех символов (включая пробелы и новые строки) слева направо, разделенные пробелами.
Выход:
Лучший Marbelous подход
135129Он выводит одно и то же дерево с одним дополнительным пробелом до и после каждой строки, он работает путем подачи литералов в подпрограмму, которая печатает пробел перед печатью литерала. И просто печатать пробел, если литерал это пробел (20 HEX)
источник
BrainF * ск 669
Сделано это для хихиканья. Выводы точно такие же, как в примере.
Позже предоставим другое решение.Не могу придумать умного способа сделать это в Lua, поэтому я просто буду придерживаться этого :)Выход
источник
PHP 46
Это было больше похоже на решение головоломки, чем на программирование, поэтому мой ответ больше похож на решение головоломки, чем на код. Однако это действительная программа PHP, поэтому я отправляю ее.
Обновите то же самое в Perl. Длина до сих пор остается 46:
источник
HTML, 55
код
выход:
источник
Bash + coreutils, 46
Теперь беззастенчиво заимствуем @ core1024 оптимального дерева :
Выход:
источник
СТАТА 63
Изменить: теперь мое собственное решение. Должны быть все буквы.
источник
Javascript 83
Я начну с жесткого решения ВАШЕГО решения
источник
alert
вместоconsole.log
PHP, 69
дает
источник
"/\w/",'\0 '