동일한 문자 큐브를 두 번 이상 사용하지 않는 규칙이 무시되는 경우 임의의 큰 Boggle 격자 에 단어를 배열하는 방법을 고려하십시오 . 당신이 (존재하는 모든 문자) 편지 큐브의 무제한을 가지고 또한 가정 및 단지입니다 .Qu
Q
단어 MISSISSIPPI
는 6 개의 큐브 만 사용하여 배열 할 수 있습니다. 가능한 배열은 다음과 같습니다.
S
MIS
PP
에서 시작 M
하여 전체 단어가 철자가 될 때까지 수평, 수직 또는 대각선으로 단계를 반복합니다.
놀랍게도 같은 더 긴 문구 AMANAPLANACANALPANAMA
는 6 개의 큐브 만 필요합니다.
MAN
PLC
그러나 더 길고 복잡한 문자열에 필요한 최소 큐브 수는 항상 분명하지는 않습니다.
도전
문자열을 취해이 Boggle과 같은 방식으로 최소 큐브 수를 사용 하도록 프로그램을 작성하십시오 . (결과 그리드의 크기와 빈 셀 수는 관련이 없습니다.)
공백 (16 진 코드 21-7E)을 제외하고 인쇄 가능한 각 ASCII 문자 마다 빈 수의 큐브가 있다고 가정합니다 . 빈 격자 셀로 사용되기 때문입니다. 공백없이 인쇄 가능한 ASCII 문자열 만 입력됩니다.
입력은 stdin 또는 명령 행에서 가져와야합니다. 출력은 stdout (또는 가장 가까운 대안)으로 이동해야합니다.
출력에서 줄 바꿈과 공백을 앞뒤로해도 괜찮습니다 (그러나 많은 양이 없을 것입니다).
문자열이 길어지면 검색 공간이 기하 급수적으로 증가하지만 알고리즘을 효율적으로 만들 필요는 없습니다 (좋은 방법이지만). 이것은 코드 골프이므로 바이트 단위 의 최단 솔루션 이 이깁니다.
예
입력이 Oklahoma!
(최소 8 자)이면 모두 정확히 8 개의 채워진 그리드 셀이 있고 (개정 된) Boggle 판독 패턴을 따르기 때문에 모두 유효한 출력이됩니다.
Oklaho
!m
또는
!
Oamo
klh
또는
lkO
!amo
h
기타