新加坡总理公开多年前写的数独程序源码

【伯乐在线导读:】新加坡总理李显龙两周前在一个创业者论坛上透露,他最后编写的一个程序是解决数独问题的程序(Sudoku solver),还是多年前用 C++ 实现的。李显龙今天在个人 Facebook 主页公布了程序源码(的 Google Drive 链接)。

(资料图:李显龙)

不方便翻梯子的朋友,直接看下面的源码:

李显龙说:

这个程序非常基础,在 DOS 窗口下运行。按行输入数据(比如:1-3-8—6),程序会打印出解决方案(如果有多种方案,则输出所有的)、程序所用的步数,还有一些搜索数据。

该程序做了回溯搜索,选择下一个扇出(fanout)最小的单元格。

李显龙给读源码的朋友留了一个问题:如果 X 是一个(二进制)整数,那 (x & -x) 怎么计算的呢?

如果各位发现了他 Bug,可给他留言!

程序运行的示例

李显龙后来更新的小提示:

As several of you noted, (x & –x) returns the least significant ‘1’ bit of x, i.e. the highest power of two that divides x. This assumes two’s complement notation for negative numbers, as some of you also pointed out. e.g. if x=12 (binary 1100), then (x & -x) = 4 (binary 100). I didn’t invent this; it is an old programming trick.

下面摘录一些网友评论

EgliWei:程序员当中最懂政治的,懂政治中最会写程序的,程序员中地位最高的。

2gua:满满的C++技术情怀..

zl1030:大体扫了几眼总理的算法,9行9列9块都是位运算,用到了递归,很精巧,值得研究!

sinox2010p1:剑桥大学计算机科学,科班出身。代码写得好,英语单词,可读性强。只是用s,s2做变量似乎跟其他单词变量有点矛盾。这个人要是不做总理开软件公司可能也很成功。

一位来自剑桥大学的教授是这么评价李显龙的:

他是真正优秀的,远远超出其他学生。我认为他涉足计算机科学(数学之后)主要是因为他的父亲(李光耀)不想让他呆在纯数学的世界里。他不但刻苦、认真、专业,而且懂得去创新。所有迹象都表明他会是一个世界级的数学家。

打赏支持我写出更多好文章,谢谢!

打赏作者

打赏支持我写出更多好文章,谢谢!

任选一种支付方式

1 1 收藏 3 评论

关于作者:黄利民

伯乐在线联合发起人,关注 IT 和互联网。 个人主页 · 我的文章 · 97 ·  

相关文章

可能感兴趣的话题



直接登录
最新评论
跳到底部
返回顶部