C - Number Place Editorial by hirayuu_At
SageMathのライブラリを使用した簡潔な解法SageMathという言語には数独を解くライブラリがあるため、それを使用して解くことも可能です。
正しい仕様は公式のリファレンスをご覧ください。
仕様として、以下のようにsolve
関数を使い、イテレーションを進めると正しい解が出るようになっています。
next(S.solve())
またこの関数は、どう頑張っても完成しない数独が渡されたとき、StopIteration
エラーが発生します。
そのため、以下のようにしてイテレーションが止まるか判定することでこの問題を簡潔に解くことが可能です。
next(S.solve(),None) is None
実装例(SageMath,686ms)
print("No" if next(Sudoku("".join("".join(input().split()) for i in range(9))).solve(),None) is None else "Yes")
posted:
last update: