알파벳순으로 정렬 된 다음 단어 목록을 고려하십시오.
balderdash
ballet
balloonfish
balloonist
ballot
brooding
broom
모든 단어는로 시작 b
하고 처음 5는로 시작합니다 bal
. 처음 두 단어 만 보면 :
balderdash
ballet
우리는 대신 쓸 수 있습니다 :
balderdash
+let
여기서 ' '
단어는 이전 단어와 접두사 문자를 공유하는 데 사용됩니다. '+'
두 번째 단어가 이전 단어와 접두사를 공유하는 마지막 문자를 나타내는 문자는 제외합니다 .
이것은의 일종이다 '트라이' 부모 '입니다 : 시각화 bal
', 2 자손을 가지고 'derdash'
와 'let'
.
다음과 같은 더 긴 목록으로 :
balderdash
ballet
brooding
또한 파이프 문자 '|'
를 사용하여 다음과 같이 공유 접두사가 끝나는 위치를 더 명확하게 만들 수 있습니다.
balderdash
| +let
+rooding
그리고 해당 트리의 루트 것 'b'
두 아이 갖는 서브 트리 가진 루트 'al'
와와 두 자녀 'derdash'
와 'let'
; 그리고 'rooding'
.
이 전략을 원래 목록에 적용하면
balderdash
ballet
balloonfish
balloonist
ballot
brooding
broom
우리는 다음과 같은 출력을 얻습니다.
balderdash
| +let
| +oonfish
| | +ist
| +t
+rooding
+m
목록에서 두 개의 연속 단어에 공유 접두사가 없으면 특수 문자로 대체되지 않습니다. 예를 들어 목록의 경우 :
broom
brood
crude
crumb
우리는 출력을 원합니다 :
broom
+d
crude
+mb
입력
입력 된 단어는 영숫자 (공백 또는 구두점 없음)로만 구성됩니다. 선택한 형식을 지정하는 한 문자열 목록, 단일 문자열 또는 기타 합리적인 방법의 형태 일 수 있습니다. 두 개의 연속 단어는 동일하지 않습니다. 알파벳순으로 목록이 정렬됩니다.
산출
출력은 줄당 또는 총계의 공백을 포함 할 수 있지만 선행 공백은 포함 할 수 없습니다. 문자열 또는 이와 유사한 목록도 허용됩니다.
이것은 코드 골프입니다 . 각 언어에서 가장 짧은 코드는 자랑 할 권리가 있습니다. 허점에 대한 일반적인 금지 사항이 적용됩니다.
테스트 사례
Input:
apogee
apology
app
apple
applique
apply
apt
Output:
apogee
|+logy
+p
|+le
| +ique
| +y
+t
Input:
balderdash
ballet
balloonfish
balloonist
ballot
brooding
broom
donald
donatella
donna
dont
dumb
Output:
balderdash
| +let
| +oonfish
| | +ist
| +t
+rooding
+m
donald
| |+tella
| +na
| +t
+umb
+
첫 번째 아래에 있을 것이라고 추측 o
하고 있지만, 나는 도전을 쓰지 않았으므로 확실하지 않습니다.
ball
이후 에 단어를 가지고있는 경우는 어떻습니까balloon
. 우리는 어떤 결과를 기대해야합니까?