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: