代码高尔夫:验证数独网格
介绍
一个有效的数独网格用数字1到9填充,在每个9,行或列的子块中没有数字出现多次。 如果您不熟悉这种流行的拼图,请阅读本文以了解更多详情。
挑战
面临的挑战是编写验证可能未满的数独网格的最短程序。
输入将是一串9行,每行9个字符,代表网格。 一个空单元格将由a表示.
。 你的输出应该是Valid
,如果网格是有效的,否则输出Invalid
。
例
输入
123...789
...456...
456...123
789...456
...123...
564...897
...231...
897...564
...564...
产量
Valid
输入
123456789
987654321
123456789
123456789
987654321
123456789
123456789
987654321
123456789
产量
Invalid
代码高尔夫规则
请以解决此问题的任何语言发布您的最短代码。 输入和输出可以通过stdin和stdout或其他您选择的文件来处理。
Winner将是发布此问题之前已有实现的语言的最短解决方案(按字节计数)。 因此,尽管您可以自由使用您刚刚编写的语言来提交0字节的解决方案,但它不会计算在内,而且您可能会获得低价。
Golfscript:56
n%{zip''+9/.{'.'-..&=}%$0=}:|2*{3/}%|;**"InvV"3/="alid"
C:165 162 161 160 159
int v[1566],x,y=9,c,b;main(){while(y--)for(x=9;x--+1;)if((c
=getchar()*27)>1242)b|=v[x+c]++|v[y+9+c]++|v[x-x%3+y/3+18+c]
++;puts(b?"Invalid":"Valid");return 0;}
这两条换行符是不需要的。 一个char由josefx保存:-) ...
哈斯克尔:207 230 218 195 172
import List
t=take 3
h=[t,t.drop 3,drop 6]
v[]="V"
v _="Inv"
f s=v[1|v<-[s,transpose s,[g=<<f s|f<-h,g<-h]],g<-map(filter(/='.'))v,g/=nub g]++"alidn"
main=interact$f.lines
链接地址: http://www.djcxy.com/p/63837.html