단어 체인저는 단일 문자 편집을 통해 한 단어를 다른 단어로 바꾸려고하는 게임으로, 각 단계는 고유 한 단어입니다. 이 문제의 경우 편집은 교체, 삽입 또는 삭제 일 수 있습니다. 예를 들어,이 경로로 WINNER → LOSER를 수행 할 수 있습니다 (다른 경로가있을 수 있음).
WINNER
DINNER
DINER
DINE
LINE
LONE
LOSE
LOSER
다른 말로 표현하면, 매번 1의 Levenshtein 거리에서 다른 단어를 통해서만 다른 단어에서 한 단어에 도달 할 수 있어야합니다.
코딩
단어 목록과 두 단어가 제공되며 경로가 존재하는 경우 한 단어에서 다른 단어로 유효한 경로를 출력하거나 경로가 존재하지 않으면 고유 한 상수 값 또는 일관된 동작을 출력해야합니다.
- 입력 단어가 모두 단어 목록에 있다고 가정 할 수 있습니다.
- 단어 목록은 편리한 플랫 형식을 통해 가져올 수 있습니다.
- 목록, 세트, 시도, 공백으로 구분 된 문자열 및 줄로 구분 된 파일은 모두 유효하지만 (예 :) 사전 계산 된 Levenshtein 인접성 그래프는 유효하지 않습니다.
- 출력 경로에는 두 입력 단어가 모두 포함되어야하지만 시작 및 종료는 중요하지 않습니다.
- 경로를 찾을 수 없으면 특정 상수, 잘못된 값, 빈 목록, 예외 발생, 0이 아닌 코드로 종료 또는 유한 시간 내에 발생하는 기타 동작을 출력 할 수 있습니다.
- 경로가 최적 일 필요는 없으며 어떤 경로를 취해야 할 필요가 없습니다.
- 계산 복잡성은 중요하지 않지만 프로그램이 유한 한 시간 안에 종료되도록 보장해야합니다. (우주의 열사를 뛰어 넘어도)
- 모든 단어가 모두 같은 경우에 문자로 구성되어 있다고 가정 할 수 있습니다
테스트 사례 예
- 고양이 → 개; [CAT, DOG, COG, COT, FROG, GROG, BOG]
- CAT, COT, COG, DOG
- 목욕 → 샤워기; [BATH, 샤워, HATH, HAT, BAT, SAT, SAW, SOW, SHOW, HOW]
- 경로를 찾을 수 없습니다
- BREAK → 수정; [BREAK, FIX, BEAK, BREAD, READ, BEAD, RED, BED, BAD, BID, FAD, FAX]
- 브레이크, 빵, BEAD, 나쁜, FAD, 팩스, FIX
- 건축 → 파괴; [빌드, 디스트로이, 빌트, GUILT, 길드, 길드, 길, 빌, 딜, 필, 대상, 구조, 건설]
- 경로를 찾을 수 없습니다
- 카드 → 보드; [카드, 보드, 카드]
- 카드, 보드, 보드
- 악마 → 천사; [앤젤, 악마]
- 경로를 찾을 수 없습니다
- 마지막 → 과거; [LAST, PAST, BLAST, CAST, BLACK, GHOST, POST, BOAST]
- 마지막, 마지막
- 삽입 → 삭제; 이 단어 목록
- INSERT, INVERT, INVENT, INBENT, UNBENT, UNBEND, UNBIND, UNKIND, UNKING, INKING, IRKING, DIRKING, DARKING, DARLING, ARLING, AILING, SIRING, SERING, SERINE, NERINE, NERITE, CERITE, CERATE, DERATE, DELATE, 인버트 지우다