Identikony to wizualne przedstawienie wartości skrótu, często wykonane z symetrycznych układów geometrycznych kształtów. Domyślnym awatarem Stack Exchange jest identyfikator. Wyzwanie polega na tworzeniu „wordenticonów” , prostych tekstowych wersji identyfikatorów, które mają zastosowanie do ciągów małych liter, tj. Słów.
Wyzwanie
Napisz program lub funkcję, która pobiera ciąg S i wyprowadza swój wordenticon. S jest gwarantowane, że jest niepuste i zawiera tylko małe litery alfabetu angielskiego az. Możesz opcjonalnie założyć, że S ma końcowy znak nowej linii.
Wordenticon z S będzie kwadratową siatką tekstu o długości boków 2*length(S)
złożonej ze spacji (
), pionowych pasków, ( |
) i poziomych pasków ( ―
).
Aby wygenerować słowo S, utwórz kwadratową siatkę, w której każda kolumna odpowiada literze S (w normalnej kolejności od lewej do prawej), a każdy wiersz odpowiada literze S (w normalnej kolejności od góry do dołu) ).
Na przykład, jeśli S jest food
naszą początkową siatką, wygląda
food
f....
o....
o....
d....
gdzie .
jest tylko symbolem zastępczym.
Dla każdego pustego punktu (każdego .
) w siatce:
- Jeśli kolumna list przychodzi przed literą rzędu alfabetycznie wymienić
.
z|
. - Jeśli kolumna list przychodzi po literze rzędu alfabetycznie wymienić
.
z―
. - Jeśli litery kolumn i wierszy są takie same, wymienić
.
z
Oto food
przykład po każdym z tych kroków:
Dodawanie
|
:food f...| o|..| o|..| d....
Dodawanie
―
:food f.――| o|..| o|..| d―――.
Dodawanie
food f ――| o| | o| | d―――
Aby uzupełnić wordenticon, usuń zbędny wiersz i kolumnę zawierającą słowa
――|
| |
| |
―――
następnie odbij wszystko w poziomie
――||――
| || |
| || |
――― ―――
i wreszcie lustro ponownie w pionie
――||――
| || |
| || |
――― ―――
――― ―――
| || |
| || |
――||――
w wyniku czego powstaje 2*length(S)
siatka tekstowa o długości boku, która jest końcowym słowem.
Przykłady
Oto kilka dodatkowych przykładów Wordenticon. Zauważ, że różne słowa mogą mieć identyczne słowa, a niektóre słowa mogą być całkowicie wykonane ze spacji (niestety markdown nie chce ich renderować).
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
――――――――――――――――――――――――
| ―――――――――――――――――――――― |
|| ―――――――――――――――――――― ||
||| ―――――――――――――――――― |||
|||| ―――――――――――――――― ||||
||||| ―――――――――――――― |||||
|||||| ―――――――――――― ||||||
||||||| ―――――――――― |||||||
|||||||| ―――――――― ||||||||
||||||||| ―――――― |||||||||
|||||||||| ―――― ||||||||||
||||||||||| ―― |||||||||||
|||||||||||| ||||||||||||
|||||||||||| ||||||||||||
||||||||||| ―― |||||||||||
|||||||||| ―――― ||||||||||
||||||||| ―――――― |||||||||
|||||||| ―――――――― ||||||||
||||||| ―――――――――― |||||||
|||||| ―――――――――――― ||||||
||||| ―――――――――――――― |||||
|||| ―――――――――――――――― ||||
||| ―――――――――――――――――― |||
|| ―――――――――――――――――――― ||
| ―――――――――――――――――――――― |
――――――――――――――――――――――――
Punktacja
To jest code-golf , wygrywa najkrótszy kod w bajtach. Tiebreaker przechodzi do wcześniejszej odpowiedzi.
Notatki
- Każde wystąpienie poziomego paska (
―
) w kodzie może być liczone jako 1 bajt zamiast 3 bajtów UTF-8, które faktycznie zajmuje. (Do dziesięciu instancji.) - W razie potrzeby możesz użyć zwykłych myślników (
-
) zamiast poziomych pasków (―
). - Usuwanie lub dodawanie końcowych spacji w wierszach wyrazu jest niedozwolone (nawet jeśli kształt pozostaje niezmieniony). Powinien to być
2*length(S)
kwadratowy tekst o dokładnej długości boku. - Wyjściowy wordenticon może opcjonalnie mieć pojedynczą nową linię.
programming
, and
a codegolf
jednak zapomniałeś puzzles
...