내가 올바르게 이해한다면, 문자열을 주어진 문자열과 일치하는 주사위를 통해 하나의 경로를 강조 표시하고 싶습니다. 때로는 여러 가지 가능한 선택이 있기 때문에 편지를 추가하면 강조 표시된 내용이 완전히 바뀔 수 있습니다. 이전 하위 문자열에서 결과를 유지하는 것이 좋은 방법 일 수 있으므로 다시 시작할 필요가 없습니다. 합리적인 방법은 가능한 모든 경로를 계산하는 것입니다.
주어진 문자열 s에 대한 답은 경로 목록입니다. 여기서 경로는 그리드 좌표 목록입니다. 각 경로는 합리적으로 강조 표시 할 수있는 경로이므로 첫 번째 경로 만 강조 표시하면됩니다. 문자열에 문자를 추가 할 때 확장 할 수없는 경로를 찾아 확장 할 수 있습니다.
VB 코드를 작성하는 방법을 모르겠다. 당신이 의사 코드를 요구 했으므로, 대신 여기에 거친 파이썬과 같은 의사 코드가 있습니다. 나는 16 개의 아이템 목록으로 boggle grid를 코딩하고있다. 이웃 (x) 함수는 인접한 위치 목록을 반환합니다 ([x-1, x + 1, x-4, x + 4]가 될 가장자리 사례 제외).
def firstLetter(typed):
answer = []
for pos in range(16): if grid[pos]==typed: answer += [pos]
return answer
def addletter(partialanswer, typed):
answer2 = []
for partial in partialanswer:
for neighbor in neighbors(partial[-1]):
if grid[neighbor]==typed:
# partial+[neighbor] is a list. answer2 is a list of such lists.
answer2 += partial + [neighbor]
return answer2
플레이어 유형은 "이동"경우, 예를 들어, 다음 (a)는 플레이어 유형 "g"는 코드 ("g") firstLetter에 호출하고 그리드 위치의 목록 "대답을"얻는다 그 안에는 "g"가 있습니다. 첫 번째 강조 표시합니다. (b) 플레이어 유형 "o", 코드는 addletter (답변, "o")를 호출하고 그리드에서 "go"라고 말한 경로 목록을 가져옵니다. 다시 한 번 강조 표시합니다.
고마워요! 작동합니다 :-) – jmasterx
@ user146780 기꺼이 도와 드리겠습니다! – redtuna