소개
인기있는 단어 퍼즐은 한 글자 만 바꾸고 항상 유효한 단어를 만드는 일련의 단계를 통해 한 단어를 다른 단어로 변환하는 것입니다. 예를 들어 BAG는 5 단계 경로를 통해 DOG로 변환 될 수 있습니다.
가방-> 박쥐-> 고양이-> 침대-> COG-> 강아지
이 경우 더 짧은 경로도 존재합니다. 예를 들면 다음과 같습니다.
가방-> BOG-> 강아지
하나의 문자로 다른 단어 쌍 사이에 모서리가있는 꼭지점이 단어로 레이블 된 그래프를 그린 경우 "BAG"에서 "DOG"까지의 최단 경로는 두 개의 모서리로 구성됩니다.
도전
경로를 따라 단계로 나타날 수있는 모든 허용 가능한 단어를 나타내는 모두 같은 길이를 가진 단어의 "사전"을 입력으로받는 프로그램을 작성해야합니다. 적어도 하나의 "가장 짧은 최단 경로", 즉 두 단어 사이의 경로를 출력해야합니다.
그 두 단어 사이의 다른 길보다 더 이상;
목록에있는 다른 단어 쌍 사이에 가능한 가장 짧은 경로 인 한.
전술 한 그래프의 맥락에서, 그러한 경로의 길이 는 그래프 의 직경 이다.
입력 단어 중 어느 것도 다른 단어로 변환 될 수없는 축퇴 된 경우, 길이 0의 적어도 하나의 경로, 즉 단일 단어를 출력한다.
예
"[bag", "bat", "cat", "cot", "dot", "dog"] 입력은 "에서 가장 짧은 경로이므로"6 개의 단어를 순서대로 (또는 역순으로) 순회하는 경로를 생성해야합니다. 이 사전 내에서 bag "에서"dog "까지는 가장 긴 5 단계입니다.
입력 [ "bag", "bat", "bot", "cat", "cot", "dot", "dog"]은 "bag, bat, bot, dot, dog"및 / 또는 그 경로를 산출해야합니다. 반전.
입력 [ "code", "golf", "male", "buzz", "mole", "role", "mold", "cold", "gold", "mode"]는 "code"사이의 경로를 생성해야합니다. 그리고 "골프".
입력 [ "1", "two", "six", "ten"]은 모서리가없는 그래프에 해당하므로 하나 이상의 단일 단어 (길이 0) 경로를 출력합니다.
입력에 길이가 다른 두 단어가 포함 된 경우 출력이 정의되지 않습니다.
규칙
- 표준 코드 골프 규칙이 적용됩니다
- 여러 개의 "가장 짧은"경로가 있습니다. 최소한 하나를 출력해야하지만 원하는만큼 자유롭게 출력 할 수 있습니다.
- 입력 사전이 프로그램으로 전달되는 방법을 자유롭게 결정할 수 있습니다.
- 바이트 단위의 최단 코드가 이깁니다.
[]또는 [[]])?