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 foodnaszą 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(przestrzeni).
Oto foodprzykł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, anda codegolfjednak zapomniałeś puzzles...