平常关注博主,居然是新加坡总理的儿子? 中国网友感叹: 有钱有权智商高,却比我还努力

平常关注的技术博主,居然是新加坡总理的儿子!

之前,《Hands-on Scala Programming》的作者李浩毅在程序员圈子引发热议。原来他就是新加坡总理李显龙的儿子。

(格子衫衬衣是不是很眼熟?)

据公开信息显示,李浩毅出于 1989 年,毕业于 MIT,计算机科学和工程学位。他是 Scala 社区的主要贡献者。

李浩毅的个人网站上自称,其开源项目在 Github 上有超过 10,000 Star,每个月的下载次数超过 7,000,000 次。自称擅长用 Scala 来构建分布式后端系统、高性能web 应用程序等。

有网友感叹,他一直关注的技术博主,原来是这样的身份背景。「这是我人生接触的第二个家里比我有权家里黄金遍地智商比我强还比我努力的人!」

还有网友调侃说,要是李浩毅不好好写代码,就只有回去当坡县县长了。

新加坡总理也是会编程的!

其实现任总理李显龙,也是有计算机科学文凭的。

他在英国剑桥大学三一学院修读数学,1973 年拿过数学尖子生「Senior Wrangler」头衔,1974 年荣获数学一等荣誉及计算机科学文凭(优异)。

2015 年 5 月,李显龙曾经在一次创业者论坛上透露,他最后编写的程序是一个解决数独问题的程序。

在帖子中,李显龙除了解释程序之外,还公开了数独程序的完整源码。有兴趣的童鞋,请看:

#include “stdio.h”int InBlock[81], InRow[81], InCol[81];const int BLANK = 0;const int ONES = 0x3fe; // Binary 1111111110int Entry[81]; // Records entries 1-9 in the grid, as the corresponding bit set to 1int Block[9], Row[9], Col[9]; // Each int is a 9-bit arrayint SeqPtr = 0;int Sequence[81];int Count = 0;int LevelCount[81];void SwapSeqEntries(int S1, int S2){ int temp = Sequence[S2]; Sequence[S2] = Sequence[S1]; Sequence[S1] = temp;}void InitEntry(int i, int j, int val){ int Square = 9 * i + j; int valbit = 1 < val;="" int="" seqptr2;//="" add="" suitable="" checks="" for="" data="" consistency="" entry[square]="valbit;" block[inblock[square]]="" &="~valbit;" col[incol[square]]="" &="~valbit;" simpler="" col[j]="" &="~valbit;" row[inrow[square]]="" &="~valbit;" simpler="" row[i]="" &="~valbit;SeqPtr2" =="" seqptr;="" while="" (seqptr2="">

< 81="" &&="" sequence[seqptr2]="" !="Square)" seqptr2++="" ;swapseqentries(seqptr,="" seqptr2);="" seqptr++;}void="" printarray{="" int="" i,="" j,="" valbit,="" val,="" square;="" char="" ch;="" square="0;for" (i="0;" i="">< 9;="" i++)="" {="" if="" (i="" %="" 3="=" 0)="" putc(‘\n’,="" stdout);="" for="" (j="0;" j="">< 9;="" j++)="" {="" if="" (j="" %="" 3="=" 0)="" putc(‘="" ’,="" stdout);="" valbit="Entry[Square++];" if="" (valbit="=" 0)="" ch="‘-’;" else="" {="" for="" (val="1;" val=""><= 9;="" val++)="" if="" (valbit="=" (1="">< val))="" {="" ch="‘0’" +="" val;="" break;="" }="" }="" putc(ch,stdout);="" }="" putc="" (‘\n’,="" stdout);="" }}void="" consoleinput{="" int="" i,="" j;="" char="" inputstring[80];for="" (i="0;" i="">< 9;="" i++)="" {="" printf(“row[%d]="" :="" ”,="" i="" +="" 1);="" scanf(“%s”,="" inputstring);for="" (j="0;" j="">< 9;="" j++)="" {="" char="" ch="InputString[j];" if="" (ch="">= ‘1’ && ch <= ‘9’)="" initentry(i,="" j,="" ch="" -="" ‘0’);="" }="" }printarray;}void="" printstats{="" int="" i,="" j,="" s;printf(“\nlevel="" counts:\n\n”);s="0;" while="" (levelcount[s]="=" 0)="" s++;i="0;while" (s="">< 81)="" {="" int="" seq="Sequence[S];" printf(“(%d,="" %d):%4d="" ”,="" seq="" 9="" +="" 1,="" seq="" %="" 9="" +="" 1,="" levelcount[s]);="" if="" (i++=""> 4){ printf(“\n”); i = 0; } S++; }printf(“\n\nCount = %d\n”, Count);}void Succeed{ PrintArray; PrintStats;}int NextSeq(int S){ int S2, Square, Possibles, BitCount; int T, MinBitCount = 100;for (T = S; T < 81;="" t++)="" {="" square="Sequence[T];" possibles="Block[InBlock[Square]]" &="" row[inrow[square]]="" &="" col[incol[square]];="" bitcount="0;" while="" (possibles)="" {="" possibles="" &="~(Possibles" &="" -possibles);="" bitcount++;="" }if="" (bitcount="">< minbitcount)="" {="" minbitcount="BitCount;" s2="T;" }="" }return="" s2;}void="" place(int="" s){="" levelcount[s]++;="" count++;if="" (s="">= 81) { Succeed; return; }int S2 = NextSeq(S); SwapSeqEntries(S, S2);int Square = Sequence[S];int BlockIndex = InBlock[Square], RowIndex = InRow[Square], ColIndex = InCol[Square];int Possibles = Block[BlockIndex] & Row[RowIndex] & Col[ColIndex]; while (Possibles) { int valbit = Possibles & (-Possibles); // Lowest 1 bit in Possibles Possibles &= ~valbit; Entry[Square] = valbit; Block[BlockIndex] &= ~valbit; Row[RowIndex] &= ~valbit; Col[ColIndex] &= ~valbit; Place(S + 1);Entry[Square] = BLANK; // Could be moved out of the loop Block[BlockIndex] |= valbit; Row[RowIndex] |= valbit; Col[ColIndex] |= valbit; }SwapSeqEntries(S, S2);}int main(int argc, char* argv[]){ int i, j, Square;for (i = 0; i < 9;="" i++)="" for="" (j="0;" j="">< 9;="" j++)="" {="" square="9" *="" i="" +="" j;="" inrow[square]="i;" incol[square]="j;" inblock[square]="(i" 3)="" *="" 3="" +="" (="" j="" 3);="" }for="" (square="0;" square="">< 81;="" square++)="" {="" sequence[square]="Square;" entry[square]="BLANK;" levelcount[square]="0;" }for="" (i="0;" i="">< 9;="" i++)="" block[i]="Row[i]" =="" col[i]="ONES;ConsoleInput;" place(seqptr);="" printf(“\n\ntotal="" count="%d\n”," count);return="">


用戶評論