000. 尤拉計劃簡介

黃志斌發表於2014-04-28

尤拉計劃是什麼?

尤拉計劃(Project Euler)是一個具有挑戰性的不僅僅需要具備數學能力的“數學/計算機程式設計”問題集合。數學方面的知識可以幫助你獲得優雅而高效的解決方案,與此同時,計算機應用和程式設計技巧也不可或缺。

開展尤拉計劃這個專案並且持續進行下去的主要目的是提供一個有趣味並且有創造性的環境,在這裡可以探索未知領域、學習新的概念。

這些問題適合那些人?

可能的解題者包括那些不滿足於教學內容的學生,對數學問題感興趣的非數學家,以及希望能夠鍛鍊自己的解決問題能力和數學能力的專業人士。當然,一切都是純英文,雖然描述題目的英文不太難,但對於感興趣的人特別是青少年來說應該具備一定的英語基礎。

任何人都可以解出問題麼?

尤拉計劃提供的問題集有不同的難度以及多種解題經驗,可以進行連續的啟發式的學習。也就是說,通過解決一個問題,提供給解題者一個新的概念,使解題者可以接觸之前無法涉及的問題。因此,有毅力的參與者將會逐一完成每一個題目。

我應該從哪裡開始?

從哪裡開始,取決於你的水平。在問題列表中你可以看到每一個問題有多少人解決,一般來說,解決的人越多,問題越簡單。

我寫出了程式,但是程式執行了好幾天程式才得到答案,有問題麼?

當然沒有問題。這裡每個問題都符合“一分鐘原則”,也就是說盡管這些問題中的難題可能需要很長一段時間來設計成功的演算法,但是在一個普通的計算機上,高效的程式應該在一分鐘之內得到答案。

如果花費超過一分鐘的時間解決問題,有問題麼?

這個當然沒有問題,但是你可能需要回到問題看看如何能夠改善你的思路。請記住,一旦你解決了某個特定的問題,你就可以進入關於這個問題的論壇參與討論,並且從其他解決了這個問題的參與者那裡獲得一些靈感。

我使用搜尋引擎解決了問題,有問題麼?

因特網是資訊時代的巨大資源庫,合理利用因特網去研究問題是應該鼓勵的,特別是在這些問題表面之下往往隱藏著一些數學的寶藏。然而,在研究解決思路和在其他網站尋找現成的答案之間,有一條明顯的界線。如果你簡單的複製了一個答案,那麼你最終得到了什麼呢?

我檢查了十遍程式,但是我的答案還是不對,是不是標準答案出了問題?

對於那些新發布的問題,確實有可能會有一些小的錯誤成為漏網之魚,或者是在遣詞造句上模糊以至於問題沒有被解釋清楚。然而,當有很多參與者都與標準答案一致,而只有少數人仍在懷疑標準答案時,那麼很有可能是“睡不著覺怨枕頭”。

是否有關於如何解題的提示?

認真閱讀題目本身的細節,仔細分析對題目給出的示例,研究題目時使用紙和筆來獲得一些關於解題的思路。題目本身可能會包含一些線索,如果這些對你來說比較陌生,那麼利用網路或者書本去獲得相關的背景知識。可以編寫一些簡陋的程式來滿足那些簡單的示例,對比程式的輸出和示例的答案,這樣你就可以確認自己理解了題目的要求,並且找到正確的方向。利用這些簡單的常識去推斷得到最終答案的程式執行時間,如果發現程式需要執行遠超過一分鐘的時間,那麼重新考慮你的解決方案。

這個專案是如何開始的?

尤拉計劃由 Colin Hughes(也被人們稱為 euler)在 2001年10月建立,一開始時作為 mathschallenge.net 網站的一個子欄目。你知道這些問題在當時有多麼流行麼?隨著會員人數的不斷增長,尤拉計劃在 2006 年有了獨立的域名。

誰在執行尤拉計劃?

新問題的創意來自我們的會員,天才而勤奮的數學家和程式設計師組成了開發團隊。一句話來說,是會員們在執行尤拉計劃。


尤拉計劃致力於鼓勵、挑戰並且發展解題技巧,並且為那些對迷人的數學世界有興趣的人提供樂趣。


在解題時,除了紙和筆以外,請準備好以下圖書,以便隨時查閱:

在這個合集中,我將主要使用 Haskell 語言解題。如果需要了解如何安裝 Haskell 軟體,請參閱:Haskell趣學指南



Euler_skyivben

相關文章