Ідентичні зображення - це візуальні зображення хеш-значень, часто виготовлені із симетричних композицій геометричних фігур. Ваш аватар стека Exchange за замовчуванням є ідентичним. Це завдання полягає у створенні "wordenticons" , простих текстових версій ідентифікаторів, які застосовуються до рядків малих літер, тобто до слів.
Виклик
Напишіть програму або функцію, яка приймає рядок S і виводить її wordenticon. S гарантовано є непорожнім і містить лише малі символи англійської літери az. Ви можете припустити, що S має зворотний новий рядок.
Словослойник 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―――
Щоб завершити wordenticon, видаліть зайвий рядок і стовпець, що містить слова
――|
| |
| |
―――
потім віддзеркалюйте всю річ горизонтально
――||――
| || |
| || |
――― ―――
і, нарешті, знову його по вертикалі
――||――
| || |
| || |
――― ―――
――― ―――
| || |
| || |
――||――
в результаті виходить 2*length(S)
текстова сітка довжини сторони, яка є завершальним словом.
Приклади
Ось кілька додаткових прикладів wordenticon. Зауважте, що різні слова можуть мати ідентичні wordenticons, а деякі wordenticons можуть бути повністю зроблені з пробілів (на жаль, розмітка не хоче їх виводити).
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
――――――――――――――――――――――――
| ―――――――――――――――――――――― |
|| ―――――――――――――――――――― ||
||| ―――――――――――――――――― |||
|||| ―――――――――――――――― ||||
||||| ―――――――――――――― |||||
|||||| ―――――――――――― ||||||
||||||| ―――――――――― |||||||
|||||||| ―――――――― ||||||||
||||||||| ―――――― |||||||||
|||||||||| ―――― ||||||||||
||||||||||| ―― |||||||||||
|||||||||||| ||||||||||||
|||||||||||| ||||||||||||
||||||||||| ―― |||||||||||
|||||||||| ―――― ||||||||||
||||||||| ―――――― |||||||||
|||||||| ―――――――― ||||||||
||||||| ―――――――――― |||||||
|||||| ―――――――――――― ||||||
||||| ―――――――――――――― |||||
|||| ―――――――――――――――― ||||
||| ―――――――――――――――――― |||
|| ―――――――――――――――――――― ||
| ―――――――――――――――――――――― |
――――――――――――――――――――――――
Оцінка балів
Це код-гольф , найкоротший код у байтах виграє. Тібрейкер переходить до більш ранньої відповіді.
Примітки
- Будь-який примірник горизонтальної смуги (
―
) у вашому коді може зараховуватися як 1 байт замість 3 байт UTF-8, який він фактично займає. (До десяти екземплярів.) - За бажанням ви можете використовувати звичайні тире (
-
) замість горизонтальних брусків (―
). - Видалення або додавання пробілів у рядках wordenticon не дозволяється (навіть якщо форма залишається незмінною). Це має бути точний
2*length(S)
квадрат довжини сторони тексту. - Вихідний wordenticon може необов'язково мати один зворотний новий рядок.
programming
, and
і , codegolf
але ви забули puzzles
...