Идентификаторы представляют собой визуальные изображения значений хеш-функции, часто сделанные из симметричных компоновок геометрических фигур. Ваш аватар Stack Exchange по умолчанию является идентичным. Эта задача заключается в создании "wordenticons" , простых текстовых версий идентификаторов, которые применяются к строкам строчных букв, то есть словам.
Вызов
Напишите программу или функцию, которая принимает строку S и выводит ее wordenticon. S гарантированно не является пустым и содержит только строчные буквы английского алфавита az. При желании вы можете предположить, что S имеет завершающий символ новой строки.
Wordenticon S будет квадратной сеткой текста с длинами сторон, 2*length(S)
состоящими из пробелов (
), вертикальных полос ( |
) и горизонтальных полос ( ―
).
Чтобы создать Wordenticon из S, сформируйте квадратную сетку, где каждый столбец соответствует букве S (в обычном порядке чтения слева направо), а каждая строка соответствует букве S (в обычном порядке чтения сверху вниз). ).
Например, если S food
наша начальная сетка выглядит
food
f....
o....
o....
d....
где .
просто заполнитель.
Для каждой пустой точки (каждой .
) в сетке:
- Если буква столбца предшествует строке буквы в алфавитном порядке, заменить
.
с|
. - Если буква столбца приходит после строки буквы в алфавитном порядке, заменить
.
с―
. - Если столбцов и строк буквы одинаковы, заменить
.
с
Вот food
пример после каждого из этих шагов:
Добавление
|
:food f...| o|..| o|..| d....
Добавление
―
:food f.――| o|..| o|..| d―――.
Добавление
food f ――| o| | o| | d―――
Чтобы завершить работу, удалите лишнюю строку и столбец, содержащий слова
――|
| |
| |
―――
затем отразить все это горизонтально
――||――
| || |
| || |
――― ―――
и, наконец, отразить его снова вертикально
――||――
| || |
| || |
――― ―――
――― ―――
| || |
| || |
――||――
в результате 2*length(S)
получается текстовая сетка с длиной стороны, которая является окончательным wordenticon.
Примеры
Вот несколько дополнительных примеров Wordenticon. Обратите внимание, что у разных слов могут быть одинаковые вордентиконы, а некоторые вордентиконы могут быть полностью сделаны из пробелов (к сожалению, уценка не хочет их отображать).
food
――||――
| || |
| || |
――― ―――
――― ―――
| || |
| || |
――||――
mood
――||――
| || |
| || |
――― ―――
――― ―――
| || |
| || |
――||――
foof
―― ――
| || |
| || |
―― ――
―― ――
| || |
| || |
―― ――
fool
――――――
| || |
| || |
|―― ――|
|―― ――|
| || |
| || |
――――――
a [2*2 grid of spaces]
to
||
― ―
― ―
||
it
――
| |
| |
――
tt [4*4 grid of spaces]
abc
――――
| ―― |
|| ||
|| ||
| ―― |
――――
and
――――
| || |
|― ―|
|― ―|
| || |
――――
but
――――
| || |
|― ―|
|― ―|
| || |
――――
you
||||
― ―― ―
―| |―
―| |―
― ―― ―
||||
bob
― ―
| || |
― ―
― ―
| || |
― ―
cat
|――|
― ―― ―
|| ||
|| ||
― ―― ―
|――|
cart
|――――|
― ―――― ―
|| ―― ||
||| |||
||| |||
|| ―― ||
― ―――― ―
|――――|
todo
||||||
― | | ―
―― ―― ――
― | | ―
― | | ―
―― ―― ――
― | | ―
||||||
mice
||||||
― |||| ―
―― ―― ――
――| |――
――| |――
―― ―― ――
― |||| ―
||||||
zyxw
||||||
― |||| ―
―― || ――
――― ―――
――― ―――
―― || ――
― |||| ―
||||||
banana
|―|―||―|―|
― ― ― ― ― ―
|| | || | ||
― ― ― ― ― ―
|| | || | ||
― ― ― ― ― ―
― ― ― ― ― ―
|| | || | ||
― ― ― ― ― ―
|| | || | ||
― ― ― ― ― ―
|―|―||―|―|
codegolf
――――――――――――――
| ||| |||| ||| |
|― ―――――――――― ―|
|―| ―――――――― |―|
|―|| ――||―― ||―|
| ||| |||| ||| |
|―|||― || ―|||―|
|―||――― ―――||―|
|―||――― ―――||―|
|―|||― || ―|||―|
| ||| |||| ||| |
|―|| ――||―― ||―|
|―| ―――――――― |―|
|― ―――――――――― ―|
| ||| |||| ||| |
――――――――――――――
programming
―||―||||||||||||―||―
| || |||||||||||| || |
―― |―||||||||||||―| ――
――― ―|―――― ――――|― ―――
| || |||||||||||| || |
――――― ―――――――――― ―――――
―――|―| |―||―| |―|―――
―――|―| |―||―| |―|―――
―――|―|―― ―||― ――|―|―――
―――|―|||| || ||||―|―――
――― ―|―――― ――――|― ―――
――― ―|―――― ――――|― ―――
―――|―|||| || ||||―|―――
―――|―|―― ―||― ――|―|―――
―――|―| |―||―| |―|―――
―――|―| |―||―| |―|―――
――――― ―――――――――― ―――――
| || |||||||||||| || |
――― ―|―――― ――――|― ―――
―― |―||||||||||||―| ――
| || |||||||||||| || |
―||―||||||||||||―||―
abcdefghijklm
――――――――――――――――――――――――
| ―――――――――――――――――――――― |
|| ―――――――――――――――――――― ||
||| ―――――――――――――――――― |||
|||| ―――――――――――――――― ||||
||||| ―――――――――――――― |||||
|||||| ―――――――――――― ||||||
||||||| ―――――――――― |||||||
|||||||| ―――――――― ||||||||
||||||||| ―――――― |||||||||
|||||||||| ―――― ||||||||||
||||||||||| ―― |||||||||||
|||||||||||| ||||||||||||
|||||||||||| ||||||||||||
||||||||||| ―― |||||||||||
|||||||||| ―――― ||||||||||
||||||||| ―――――― |||||||||
|||||||| ―――――――― ||||||||
||||||| ―――――――――― |||||||
|||||| ―――――――――――― ||||||
||||| ―――――――――――――― |||||
|||| ―――――――――――――――― ||||
||| ―――――――――――――――――― |||
|| ―――――――――――――――――――― ||
| ―――――――――――――――――――――― |
――――――――――――――――――――――――
счет
Это код-гольф , выигрывает самый короткий код в байтах. Tiebreaker переходит к более раннему ответу.
Примечания
- Любой экземпляр горизонтальной черты (
―
) в вашем коде может быть посчитан как 1 байт вместо 3 байт UTF-8, которые он фактически занимает. (До десяти экземпляров.) - При желании вы можете использовать обычные тире (
-
) вместо горизонтальных полос (―
). - Удаление или добавление завершающих пробелов в строках wordenticon не допускается (даже если форма остается неизменной). Это должен быть точный
2*length(S)
текстовый квадрат длины стороны. - Выходной Wordenticon может опционально содержать один завершающий перевод строки.
programming
, and
и , codegolf
но вы забыли puzzles
...