식별자 아이콘 은 해시 값을 시각적으로 묘사 한 것으로 종종 기하학적 모양의 대칭 배열로 만들어집니다. 기본 스택 교환 아바타는 ID 아이콘입니다. 이 과제는 소문자 문자열 (예 : 단어)에 적용되는 간단한 텍스트 기반 버전의 아이덴티 콘 인 "wordenticons" 를 만드는 것입니다.
도전
문자열 S를 받아서 wordenticon을 출력하는 프로그램이나 함수를 작성하십시오. S는 비어 있지 않아야하며 소문자 영어 문자 az 만 포함합니다. S에 후행 줄 바꿈이 있다고 가정 할 수도 있습니다.
S의 wordenticon은 2*length(S)
공백 (
), 세로 막대 ( |
) 및 가로 막대 ( ―
) 로 구성된 측면 길이를 가진 텍스트의 사각형 격자입니다 .
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 예제입니다. 다른 단어는 동일한 단어 아이콘을 가질 수 있으며 일부 단어 아이콘은 공백으로 완전히 만들 수 있습니다 (불행히도 마크 다운은 렌더링을 원하지 않습니다).
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
――――――――――――――――――――――――
| ―――――――――――――――――――――― |
|| ―――――――――――――――――――― ||
||| ―――――――――――――――――― |||
|||| ―――――――――――――――― ||||
||||| ―――――――――――――― |||||
|||||| ―――――――――――― ||||||
||||||| ―――――――――― |||||||
|||||||| ―――――――― ||||||||
||||||||| ―――――― |||||||||
|||||||||| ―――― ||||||||||
||||||||||| ―― |||||||||||
|||||||||||| ||||||||||||
|||||||||||| ||||||||||||
||||||||||| ―― |||||||||||
|||||||||| ―――― ||||||||||
||||||||| ―――――― |||||||||
|||||||| ―――――――― ||||||||
||||||| ―――――――――― |||||||
|||||| ―――――――――――― ||||||
||||| ―――――――――――――― |||||
|||| ―――――――――――――――― ||||
||| ―――――――――――――――――― |||
|| ―――――――――――――――――――― ||
| ―――――――――――――――――――――― |
――――――――――――――――――――――――
채점
이것은 가장 짧은 코드 인 바이트 코드 인 code-golf 입니다. Tiebreaker는 이전 답변으로갑니다.
노트
- 코드 의 가로 막대 (
―
)는 실제로 차지하는 3 UTF-8 바이트 대신 1 바이트로 계산 될 수 있습니다. (최대 10 개의 인스턴스) - 원하는 경우
-
가로 막대 (―
) 대신 일반 대시 ( )를 사용할 수 있습니다 . - 단어 모양 아이콘의 선에서 후행 공백을 제거하거나 추가하는 것은 허용되지 않습니다 (모양이 변경되지 않은 경우에도). 정확한
2*length(S)
가로 길이 텍스트 사각형 이어야합니다 . - 출력 워드 엔 티콘은 선택적으로 단일 후행 개행을 가질 수있다.
programming
, and
그리고 codegolf
하지만 당신은 잊었 puzzles
...