如何評價新加坡總理李顯龍的編程水平?

現年 63 歲的新加坡總理李顯龍多年前用 C++ 寫的解數獨小程序。

源碼:https://drive.google.com/folderview?id=0B2G2LjIu7WbdfjhaUmVzc1lCR2hUdk5fZllCOHdtbFItbU5qYzdqZGVxdmlnRkJyYVQ4VU0usp=sharingusp=sharingurp=https://drive.google.com/folderview?id%3D0B2G2LjIu7W#list


李顯龍是劍橋數學系 1st class,並且修了computer science 雙學位。這個程序說明他還沒有把學生時代的東西忘記。這麼多年從政,很不容易其實。

-----

很多人說不咋樣。其實是不咋樣,並且這明明是C,和C++基本沒關係。

但是你要知道一件事情。李顯龍本科的時候按時間算應該40年前,也就是1975年左右(查了下李顯龍1974年大學畢業)。查查C語言歷史:

在1972年,美國貝爾實驗室的 D.M.Ritchie 在B語言的基礎上最終設計出了一種新的語言,他取了BCPL的第二個字母作為這種語言的名字,這就是C語言。

也就是說,李顯龍讀大學的時期,計算機系基本是不可能教你C語言的。那個年代的演算法研究和現代比也是天差地別。那個年代的演算法更多的是簡單數據結構,如何生成隨機數,等最「原始」最「樸素」的演算法。

所以他的編程水平,在現在的計算機世界不值得一哂,但是考慮到他畢業的年代,和職業歷程,對任何一個人有他相同的經歷來說,已經接近於挑戰一個人的極限了。

-----

有同學指出(謝謝 @Niklaus Tseng 和 @PlanetOrange 和 @姚見南 ), 李顯龍並不是CS雙學位,而是數學系開了一個diploma課程,為期一年。我的理解大概是幾門CS選修課一起打包修的一種課程,全部修完後也有一個單獨的評分等級系統(優秀,良好,及格之類的)。


Quoted from his speech on Smart Nation on 20 April:

"... I have set up the Smart Nation Programme Office, to bring all the pieces together, within Government, and also between Government and the private sector, to use technology to achieve social and economic objectives, and to make a difference in all our lives. The Smart Nation Programme Office lives in the Prime Minister』s department. I take a personal interest in this. 40 years ago, after doing a math degree, I went on to study computer science, on my father』s advice. He said there is a future in that, and he was right. So for the Smart Nation Programme Office, I have put Minister Vivian Balakrishnan in charge, reporting to me. Vivian is both a hacker and a dabbler – He used to be an eye surgeon but since he does not get to operate on eyes nowadays, he dabbles in building simple robots, assembling watches, wireless devices and programming apps. His day job is to be the Minister for the Environment and Water Resources, and so when he builds apps, he uses the real time APIs generated by the Ministry. That』s called user-testing. I used to enjoy this; it is a long time since I』ve done anything. The last programme I wrote was a Sudoku solver in C++ several years ago, so I』m out of date. My children are in IT, two of them – both graduated from MIT. One of them browsed a book and said, 「Here, read this」. It said 「Haskell – learn you a Haskell for great good」, and one day that will be my retirement reading. ..."

李顯龍明顯是一直以來對數學和cs很有興趣的。能力完全不用懷疑,劍橋1973年的Senior Wrangler -- 數學課程的top one,學神級別的, 之後還有CS的diploma (with distinction)。有興趣的可以搜搜歷年的senior wrangler得主,很多都成為數學或者物理學教授了。我覺得如果他不是新加坡總理,完全有可能成為一個數理方面的成功學者。

扯遠點,話說他家隨便哪一個都可以寫code...兩個小兒子都是MIT學IT的,老婆NUS EE 1st Class, Stanford EE的MS,沒記錯的話和前妻的大兒子也是NUS學CE還是CS的。。。世界首腦家庭如果搞數學競賽或者編程競賽他家應該無懸念的冠軍了 。。。。


插播一個,李顯龍在Cambridge讀書的時候mentor是Béla Bollobás。Bollobás是Erd?s的學生,Gowers的老師。他在一個採訪裡面說李顯龍當年在劍橋就很厲害,如果不回去當總理應該也會成為出色的數學家。

Bollobás在採訪中說過李顯龍的水平比第二名高很多,而且當時是很有可能成為傑出的數學家。他甚至勸過李光耀讓李顯龍去搞純數學。 I』m sure his father never
realized how exceptional Loong was. He thought Loong was
very good. No, Loong was much better than that. When I
tried to tell Lee Kuan Yew, 「Look, your son is phenomenally
good: you should encourage him to do mathematics」(http://195.134.81.187/data/articles/ql-nmtgnddo.pdf.pdf)

再安利一下:

Paul Erd?s不用介紹,傳奇人物。

Timothy Gowers,菲爾茲獎得主,著名數學博客Gowers"s Weblog on WordPress.com創建人。他的wordpress和陶哲軒的博客齊名。他的學生Ben Green也曾是菲爾茲獎熱門得主,陶哲軒當年的菲爾茲獎的一個著名結果Green-Tao Theorem中的Green是也。

這個答案也沒有評價李顯龍的coding水平...


左花括弧換行的男孩子,運氣都不會太差。


LeetCode Hard 級別 K.O. - Sudoku Solver

====已經有好事之徒在 LeetCode OJ 上試過了,竟然 1 ms K.O.====

Singapore prime minister Lee Hsien Loong"s Sudoku Solver code runs in 1ms


比奧巴馬那一行js代碼強。


總理中最能寫程序的,程序員中最能當總理的。


嗯...沒有用到什麼花俏的演算法

話說解 Sudoku 也大可不必用什麼大不了的演算法就是了

(但我確實聽過 9 行 c 解任意 Sudoku 的事情)

沒有寫錯就很好啦

Sudoku 還能寫成怎麼樣???


新加坡的李顯龍比你們不知道高到哪裡去了


根據他的年齡、畢業時間,以及C發明和流行的時間,還是無法判斷他是在什麼時候寫的

水平怎麼樣也不好說,畢竟他沒專門從事程序員行業

編程水平,基本還是靠多年的實踐才能提升、鞏固的

只說數獨,以前用delphi、js分別做過一個輔助工具:

數獨助手 http://126.am/haitao

後來看到一段 直接快速解數獨 的C代碼,大家可以比較一下:

#include&

#define TEST_NUM4 "000" "600" "142"

"026" "000" "000"

"700" "004" "009"

"000" "006" "200"

"060" "901" "050"

"005" "300" "000"

"900" "400" "007"

"000" "000" "810"

"842" "007" "000"

const int c[10] = {0x0,0x1,0x2,0x4,0x8,0x10,0x20,0x40,0x80,0x100};

int a[81];

int b[27];

int cc=0;

#define M(g,k) (b[g%9]|b[(g/9)+9]|b[18+(g/27)*3+((g%9)/3)])c[k]

#define L(g,k) b[g%9]^=c[k],b[(g/9)+9]^=c[k],b[18+(g/27)*3+((g%9)/3)]^=c[k]

int t(int i,int p)

{

int k;

if(i&>81){

// putA();

return 1;/** got it */

}

while(p&<81a[p])p++;

printf("%d=%d %d
",++cc,i,p);

for(k=9;k;--k){

if(!(M(p,k))){

a[p]=k;

L(p,k);

if(t(i+1,p+1)) return 1;

a[p]=0;

L(p,k);

}

}

return 0;

}

main(int i, char **x)

{

const char *pcFunc= TEST_NUM4;

int j=0,k=1;

if (i&>1)

pcFunc=x[1];

for(;*pcFunc;pcFunc++,j++){/** init */

if (a[j]=*pcFunc-"0"){

L(j,a[j]);

k++;

}

}

t(k,0);/** get */

for(j=81;j--;){

printf("%d%c",a[80-j],j%9?" ":"
");

}

return 0;

}


花括弧不換行,差評。


這個比我寫的好


說他水平不高的都是傻逼,也不看看自己什麼水平?要學歷沒學歷,要項目沒項目。


李光耀的自傳中有一句話,大意是:我在顯龍出生那一年給我的導師寫了封信,為他在劍橋大學預定了一個十七年後的位置。

因為李光耀自己也是劍橋的嘛。


以當下好多oj的尿性來說:數獨用暴力解,直接槍斃。。。基數為3的數獨不帶勁,換成4或5吧。。。

估計李總理擼代碼那會knuth還沒出版他的神作,所以還是能秒殺作為弱雞的我好幾條街


位運算就適合用來解這種填格子的問題,什麼八皇后啊,數獨啊。考慮到他搞程序的那個年代和上的學校,自然算是牛人了。


leetcode裡面數獨求解可是hard級別的。而且用c++也算個漢子了


好像被人發現了一個bug 哈哈 在非死不可上


字幕組水平


《如何評價雷軍的英文水平》

無聊嗎?

我們只需知道馬雲是個靠譜的英語老師,雷軍是個靠譜的程序員;他們在還是凡人是可以靠自己的看家本領生存。

對了,《如何評價馬雲的編程水平?》

要不要問一問?


我和他談笑風生 你們啊~ naive!(配合樓上


已經完爆90%的程序員了,我熟悉的同事沒一個能寫出來吧


水平不是太高,應為他的解法是很直白的,但是對於一些特殊的輸入出結果比較慢

速度快的解法是dlx來做,或者其他優化。

===========================================================

這些都是我從大牛那兒聽到的,本人並不會寫dlx,但是鏈接裡面給出的那種是可以寫的。


推薦閱讀:

如何定位「雅克德羅」這個品牌?
如何評價別克新車威朗?
如何看待香港將要取消自由行?
怎麼評價納爾遜·曼德拉?
如何評價作業本這個人?

TAG:程序員 | 編程 | C | 新加坡 | 如何看待評價X |