나는 파이썬에서 스도쿠를 this 웹 사이트에서 푸는 것을 이해하려고합니다. 나는 "검색"기능 특히 "검색"에서 "일부"기능의 응용 프로그램을 이해할 수 없었다. (즉 사각형의 가능한 값의 문자열 : 각각 제곱 값의 이름 키)를 search
의 입력파이썬에서 함수의 입력 매개 변수로 루프를 사용합니다.
def search(values):
"Using depth-first search and propagation, try all possible values."
if values is False:
return False ## Failed earlier
if all(len(values[s]) == 1 for s in squares):
return values ## Solved!
## Chose the unfilled square s with the fewest possibilities
n,s = min((len(values[s]), s) for s in squares if len(values[s]) > 1)
return some(search(assign(values.copy(), s, d))
for d in values[s])
def some(seq):
"Return some element of seq that is true."
for e in seq:
if e: return e
return False
values
는 사전이다. search
에서 우리는 하나의 사각형 (스퀘 쿠 (Sudoku)에서 하나의 숫자를 나타내는 자리 표시 자임)을 찾으려고 시도합니다.이 사각형에는 가능한 값의 수가 적습니다. 그런 다음 각 값에 대해 assign
함수가 호출됩니다. assign
의 출력은 false
이거나 새 사전 values
이 될 수 있습니다. 나는 여기서 "어떤"기능의 목적이 무엇인지 궁금하다.