数独二
* * * *
拉格朗日计划
* * * *
数独二

数独是一种常见的益智游戏,给定一个9×9的网格,其中一些格子已经填入了1到9之间的数字,要求在每一个空格中也填入1到9之间的数字,使得每一行、每一列,和指定的3×3的子区域中这9个数字都只出现正好一次。

解出给定的数独,输入和输出数据均为如下格式:

注:因边框为非标准Unicode字符,其宽度在不同的环境中会有变化,而原题页面中用于正确排版的特定字体本站并未安装,因此以下用截图代替。边框所用的具体字符可以参见下文的源代码,或原题页面



本题难度:



解答

本题与数独一的区别仅是输入数据格式不同,改写一下输入输出部分即可。

最终代码有六行。

代码长度:277字节 vs. 全站第一:157字节。

import sys
q=[y for x in range(1,18,2)for y in range(38*x+2,38*x+38,4)if x%4]
def r(a):
  if i:=a.find('   ')+1:k=q.index(i);[m in[(k-j)%9*(k//9^j//9)*(k//27^j//27|k%9//3^j%9//3)or a[q[j]]for j in range(81)]or r(a[:i]+m+a[i+1:])for m in'123456789']
  else:print(a)
r(sys.argv[1])