星期四, 二月 09, 2012

想欢乐一下吗?试试在R里面玩数独

数独(Sudoku)一词来自日语,意思是“单独的数字”。它是一种填数字游戏,最初由十八世纪的瑞士数学家欧拉发明的。1984年日本益智杂志将其加以改良,并增加了难度,还为它取了新名字称做“数独”。1997年,一位爱尔兰人无意中在日本发现这个游戏,并编写了一个计算机程序来自动生成完整的数独方阵。2004年年底,伦敦《时报》开辟了数独专栏,之后,世界各国数十家日报相继开辟专栏来介绍数独。专门介绍这种娱乐的杂志和一本又一本的书籍如雨后春笋般涌现,相关的比赛,网站和博客等等,也接二连三地冒出来。

R语言拥有数千种扩展包,除了提供数据分析之外还有各种千奇百怪的功能。其中就包括了sudoku包,它的主要功能包括生成数独问题、解数独、玩数独,还可以进行导入和导出。

我们从这个数独网站来找一个数独题目,首先要将数独图转为一个文本文件。题目和转化后的形式如下:

--13-94--
3-54---1-
6----72-9
--4-6--28
--31-86--
78-2--3--
5-97----6
-6---15-3
--76-59--

然后将其读入转化为矩阵Z,即可由solveSudoku函数解出,当然如果想挑战一下自己的话也可以用playSudoku(z)在R里面直接尝试解题。
z <-  readSudoku('d:/test.txt')
solveSudoku(z)
sudoku包不仅可以解数独,还能自动生成数独题目,或是从英国的数独网站抓取当天的题目。


没有评论:

发表评论