我個人很喜歡的其中一個技巧是 x&(x-1)
,以及類似的 x&(-x)
。
最簡單的應用即連結中的 "Counting bits set, Brian Kernighan's way", 另外也可以用來解 n-queen1, 不久前新加坡總理李顯龍在 facebook 上分享自己寫的 sudoku solver2,也用了這種技巧。
雖然 Code Jam 是在自己的電腦上跑,且有較充裕的執行時間。但如果參加不只一種競賽、解題網站,選手很可能只會選擇一個能全部通用的語言,所以其實可用的選擇並不多。
執行效率也是一個問題,早期的解題網站還能找到一堆,只要使用 Java 就很難寫過的題目。計時方式是 process 從開始到結束的時間,對於 Java 更加不利。導致 Java 需要用 O(n^2) 才能寫過的題目,C/C++ 可能用 O(n^3) 仍然能通過。
C++ 佔多數的原因,我想除了效率以外,學校教育應該也是主因,可以看到有許多歐洲國家使用 Python, Java 的比例明顯高上許多。
sayuan
積分 3
好奇這種跨 datacenter 的 cluster (不管是暫時或永久的),網路是如何配置的? 直接 export port? 然後用 iptables 限制 IP? 遇到沒有加密的 protocol 時怎麼辦?
我可能會用 sshuttle 將兩個 datacenter 中各選一台互連,其餘的電腦則設 static routing 送往這兩台,由這兩台透過 ssh tunnel 轉發。
如果只是短期的 migration,我覺得這樣就 ok 了,但若是需要長期的維持跨 datacenter 的 cluster,用這種作法我總覺得相當不踏實。(ssh 斷線、single point failure)