新加坡總理公開多年前寫的數獨程式原始碼

黃利民發表於2015-05-05

【伯樂線上導讀:】新加坡總理李顯龍兩週前在一個創業者論壇上透露,他最後編寫的一個程式是解決數獨問題的程式(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做變數似乎跟其他單詞變數有點矛盾。這個人要是不做總理開軟體公司可能也很成功。

一位來自劍橋大學的教授是這麼評價李顯龍的:

他是真正優秀的,遠遠超出其他學生。我認為他涉足電腦科學(數學之後)主要是因為他的父親(李光耀)不想讓他呆在純數學的世界裡。他不但刻苦、認真、專業,而且懂得去創新。所有跡象都表明他會是一個世界級的數學家。

打賞支援我寫出更多好文章,謝謝!

打賞作者

打賞支援我寫出更多好文章,謝謝!

任選一種支付方式

新加坡總理公開多年前寫的數獨程式原始碼 新加坡總理公開多年前寫的數獨程式原始碼

相關文章