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

介绍

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