代码高尔夫:验证数独网格

介绍

一个有效的数独网格用数字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

上一篇: Code Golf: Validate Sudoku Grid

下一篇: How to implement Prim's algorithm using STL ?