考慮自己是開發人員?你應該解決項目歐拉問題

2021-01-10 我們go

我將提出一個大膽的主張:每個開發人員(和有抱負的開發人員)都應該解決前50個項目Euler問題。

處理項目Euler問題的好處太大了,不容忽視:

他們將揭示你是否理解你正在使用的語言的基本操作,並且可以用任何程式語言解決它們你將學習如何編寫可靠的,標準的,香草代碼。 不需要代碼庫,因此你不會依賴拐杖你將不得不考慮如何在內存中存儲和訪問數據你需要優化處理速度並仔細考慮算法在這篇快速(<5分鐘閱讀)的文章中,我將闡述為什麼你應該在你想要學習的每種程式語言中解決Project Euler問題。

從基礎知識開始

傳奇的美式橄欖球教練文斯隆巴迪將以(現在著名的)演講開始每個賽季前的訓練:

「先生們,」他對一個職業足球運動員的房間說,「這是一個足球。」他繼續解釋在比賽中打球和獲勝的基本原則 - 跑步,傳球,搶斷和踢球。

隆巴迪對基本面的無情關注使他成為足球歷史上最有名的教練,其歷史上的冠軍數量超過其他教練。

同樣的原則適用於軟體開發。

任何編碼挑戰都將測試你使用變量,條件語句,循環,數據結構和程式語言的其他常見功能的能力。

然而,Euler項目是對你理解和掌握基礎知識的特別嚴格的考驗。 你必須將不同排列的基本原理結合起來才能解決問題。

基本面就是你所需要的。 如果你一直在編寫Web應用程式,遊戲或其他軟體,那麼你很可能已經習慣使用某些庫來完成特定的,可預測的任務。

項目Euler帶走了這些庫並純粹測試了你解釋簡單邏輯問題的能力,並編寫了解決這些問題的簡單代碼。

培訓難以教授的東西:優化直覺

這就是為什麼每個計算機科學本科課程都包括算法和數據結構課程,以及為什麼這麼多公司在招聘過程中測試算法思維的原因。

編寫優秀代碼的核心是將最佳解決方案應用於手頭的邏輯問題。

挑戰在於知道何時花時間優化以及何時使用簡單的解決方案。

有時直接的解決方案是最好的解決方案。

對其他人來說最易讀並且直觀有意義的解決方案通常是最好的。

最初的幾個項目Euler問題將教你這一課。 它們涉及具有(相對)小上限的簡單計算。 計算機速度很快,沒有必要為自己創建過度優化前幾個解決方案的工作。

其他時候,你需要進行優化才能看到真正的性能提升

大學裡的理論算法課不能教你什麼是等待慢速算法計算問題答案的感覺。

一個優秀的開發人員對效率有直覺。 隨著時間的推移,經驗豐富的開發人員為問題解決方案的次優實現開發了第六感。 你從經驗中發展出這種直覺,而後來的項目歐拉問題是效率直覺的優秀教師。

如果算法經常被使用或者在大輸入上使用,那麼花費時間進行優化對於節省時間來節省時間是值得的。 但在其他情況下,優化僅用於小規模的解決方案並不值得花費額外的時間。

判斷優化權衡是經驗豐富的開發人員所擁有的直覺,而這是Euler項目可以開始教授的技能。

你將對你選擇的語言變得更加流暢和自信

解決即使是少數項目歐拉問題,也會對你對特定語言的信心和流暢度產生奇蹟。 這也是獲取新語言或刷新你曾經知道的語言的好方法。

例如,在過去的幾個月裡,我一直專注於使用Python進行編碼,而且我用C語言寫了一段時間已經有一段時間 - 我在Python之前就已經知道了這種語言。

我開始在C中實現前幾個Project Euler問題來刷新我的技能。 它創造了奇蹟,帶回我的技能並提醒我語法。 類似地,我使用Project Euler來學習Java的基礎知識,因為Java的語法與C的關鍵方式類似但不同。

練習文檔和測試的絕佳機會

如果你想為你的產品組合添加令人印象深刻的東西,請啟動一個GitHub存儲庫,你可以在其中保存解決Project Euler問題的解決方案。

(注意:多條評論提到,分享你的Project Euler解決方案是違反競爭規則的。如果你正在競爭當前的Project Euler挑戰,請加入官方論壇並在那裡討論代碼。

但是,對於已經解決了數十萬次的存檔問題,將Project Euler代碼添加到你的投資組合中可以獲得很多好處,就像數百名其他開發人員在你之前所做的那樣。

只需確保在開發自己的解決方案時不要看別人的解決方案! 這會破壞樂趣,意味著你不會學到太多!)

完成解決方案後,檢查變量和函數名稱以確保它們是直觀的,刪除任何不需要的代碼,並以一致的方式格式化所有內容。

接下來,添加有關您在代碼中做出決策的原因的注釋。 學習寫好評論是一項技巧。 一個好的經驗法則:任何優秀的開發人員都可以弄清楚你的代碼做了什麼,所以你的評論應該解釋為什麼它這樣做。

Project Euler的另一個絕佳機會是學習單元測試。 在編寫解決方案之前,為項目添加最小測試框架並編寫測試。 這是開始使用測試驅動開發的好方法。

項目歐拉!

如果你解決了前50-100項Euler問題,你將:

掌握編程基礎知識對所選語言的語法充滿自信和流利了解算法優化,更重要的是,優化直覺獲得使用良好文檔編寫乾淨代碼的經驗有機會練習測試驅動的開發在GitHub和產品組合中展示令人印象深刻的東西我不知道任何其他一組適合教授和演示編程基礎知識的問題。 項目Euler是任何開發人員或有抱負的開發人員必須做的事情。

相關焦點

  • 你也能看懂:歐拉用這個結論解出巴塞爾問題,高斯最終證明
    下面我們來講一講,歐拉是如何利用高斯證明的代數基本定理的推論來去推導巴塞爾問題的。巴塞爾問題是這樣的:這個問題很長時間數學家都不知道如何去解決,歐拉利用代數基本定理的一個推論把這個問題給巧妙地解決了,雖然歐拉的推導並不是十分嚴格,但是他卻得出了正確的結果,下面我們來看一看歐拉是如何進行他的推導的!
  • 歐拉、伯努利、達朗貝爾關於弦振動問題的論戰,催生了傅立葉級數
    那就可以用微積分的方法來分析解決了。如約翰·伯努利在1727年的一篇關於弦振動問題的論文中,約翰就考慮假設一根無重量的彈性弦,在弦上等間隔地放置著n個等質量的質點,當放置6個質點時,就可以得到弦的簡諧振動方程:約翰的簡諧振動方程證明了在任何時刻弦的形狀必定是正弦曲線,後來歐拉、達朗貝爾、約翰的兒子丹尼爾都導出了不同形式的弦振動微分方程。
  • 看得懂的數學之美:從青年歐拉對巴塞爾問題的解法說起
    在本文中,我們希望通過一步步重現歐拉解巴塞爾問題的過程,體會到這種數學之美。巴塞爾問題是一個著名的數論問題,這個問題首先由皮耶特羅·門戈利在 1644 年提出,由歐拉在 1735 年解決。由於這個問題難倒了以前許多數學家,歐拉一解出這個問題馬上就出名了,當時他二十八歲。這個問題是以瑞士的第三大城市巴塞爾命名的,為了紀念它是歐拉和伯努利家族的家鄉。
  • 這個「不科學」的問題,曾讓大數學家歐拉出醜
    現在,科學家對「奇點」已經習以為常,他們知道,這些點是自己的理論不再適用的地方。但 18 世紀的學者尚未意識到這一點,在探討經典力學中一個非常簡單的問題時,他們也遭遇了一個奇點。為了解決這個經典力學框架下實際上無法解決的問題,包括大數學家歐拉在內的學者們想出了一些稀奇古怪的方法,得出了十分荒謬的結論。科學家花費了一個世紀才認識到這種研究是徒勞的:在奇點,理論遭遇了其極限。
  • 這個「不科學」的問題,曾讓大數學家歐拉出醜
    現在,科學家對「奇點」已經習以為常,他們知道,這些點是自己的理論不再適用的地方。但 18 世紀的學者尚未意識到這一點,在探討經典力學中一個非常簡單的問題時,他們也遭遇了一個奇點。為了解決這個經典力學框架下實際上無法解決的問題,包括大數學家歐拉在內的學者們想出了一些稀奇古怪的方法,得出了十分荒謬的結論。
  • 高考數學讓你崩潰,你應該感謝歐拉、高斯、笛卡爾貢獻這些知識點
    柯西在解決這個數學危機的時候發揮了很大的作用,雖然柯西埋沒了伽羅瓦和阿貝爾兩位少年天才,但是柯西可以說對於數學的貢獻是非常大的。柯西對於牛頓引發的數學危機的解決也起到了巨大的作用。康託爾、戴德金和魏爾斯特拉斯:對實數體系的完善(這幾個都算一個來哈~)直到 19 世紀,實數體系都沒有得到完善,對於虛數、負數是否可開根問題、無理數都還沒有得到解決,所以魏爾斯特拉斯等人發起了「分析算術化」運動。魏爾斯特拉斯認為實數是全部分析的本源。
  • 歐拉、歐幾裡得、笛卡爾都沒能解決的數學問題,他探索了新的方案
    蕭簫 發自 凹非寺 量子位 報導 | 公眾號 QbitAI 歐拉、歐幾裡得、笛卡爾、尼科馬修斯都沒能解決的千年數學問題,還有破解的可能嗎? 還真有可能。
  • 歐拉、歐幾裡得、笛卡爾都沒能解決的數學問題,他探索了新的方案
    笛卡爾、尼科馬修斯都沒能解決的千年數學問題,還有破解的可能嗎?問題被解決了?2000年後,歐拉研究這個問題時發現,歐幾裡得給出的公式,實際上只能生成完美數中的每個偶數。他提出了自己的觀點:「完美奇數」應該具有「欺騙數」的一切特性,而且還自帶特殊條件。
  • 選車3+2:歐拉好貓怎麼樣?價格與顏色應該是你最糾結的地方
    [資訊-牛車網]最近找我諮詢的女生越來越多,她們口中比較高頻的話術是,歐拉好貓怎麼樣?這應該不是個別現象,從這可看出,這款車確實得到頗多女生關注。既然大家如此關心這款車,那我就梳理一下優缺點,幫你找到你問題的答案。
  • 此「歐拉」非彼「歐拉」 你可真正了解歐拉?
    阿基米德的「給我一根槓桿和一個支點,我就能撬動地球」豪言壯語,牛頓因為砸在頭上的一顆蘋果而引發萬有引力定律,高斯從小就展現的數學天分,這些都是學生時代耳熟能詳的典故,唯獨沒有關於歐拉的。相對於其他三人,歐拉的人生簡直少了許多戲劇性。但是,作為數學史上最多產的數學家,歐拉的人生不得不讓人驚嘆!
  • 這個「不科學」的問題,曾讓大數學家歐拉受到了反駁
    現在,科學家對「奇點」已經習以為常,他們知道,這些點是自己的理論不再適用的地方。但 18 世紀的學者尚未意識到這一點,在探討經典力學中一個非常簡單的問題時,他們也遭遇了一個奇點。為了解決這個經典力學框架下實際上無法解決的問題,包括大數學家歐拉在內的學者們想出了一些稀奇古怪的方法,得出了十分荒謬的結論。科學家花費了一個世紀才認識到這種研究是徒勞的:在奇點,理論遭遇了其極限。
  • 這個「不科學」的問題,曾讓大數學家歐拉受到了反駁
    現在,科學家對「奇點」已經習以為常,他們知道,這些點是自己的理論不再適用的地方。但18 世紀的學者尚未意識到這一點,在探討經典力學中一個非常簡單的問題時,他們也遭遇了一個奇點。為了解決這個經典力學框架下實際上無法解決的問題,包括大數學家歐拉在內的學者們想出了一些稀奇古怪的方法,得出了十分荒謬的結論。科學家花費了一個世紀才認識到這種研究是徒勞的:在奇點,理論遭遇了其極限。
  • 針對Python開發人員的10個「瘋狂」的項目構想
    這些項目構想很有可能會讓你對這門神奇的語言產生興趣。最棒的是,你可以通過這些有趣但也具有挑戰性的項目來增強 Python 編程技能。你知道 Python 是被稱為 全能程式語言 的嗎?是的,它確實是,雖然不應該在每個項目中都使用它。你可以使用它來創建桌面應用程式、遊戲、行動應用程式、網站和系統軟體。
  • 論數學之美——歐拉及其對著名的巴塞爾問題的精確解(推導)
    被稱為「自古以來最偉大的數學家」本文將描述瑞士數學家萊昂哈德·歐拉如何解決著名的巴塞爾問題。歐拉是歷史上最偉大的數學家之一。他還是一個多產的數學家,他的作品集共92卷。皮埃爾西蒙·德·拉普拉斯評價歐拉對數學的影響,他有一句名言:讀歐拉,讀歐拉,他是我們所有人的主人。
  • 作為軟體開發人員需要具備的技術技能
    我是幫助軟體開發人員開發除技術技能之外的「軟技能」的堅定支持者。但是不可否認:技術技能很重要。我的意思是,如果您實際上不能編寫代碼和開發軟體,那麼您學到的所有軟技能都不會真正幫到您。也許您會成為一名優秀的項目經理,而不是一名優秀的軟體開發人員。
  • 新能源品牌歐拉,創建純電小型車新標準
    因而,無論是從設計、研討和開發的觀念,還是從適用的角度來看,理解和研發電動汽車技術的社會需求會越來越大。而長城汽車發布了旗下獨立純電動汽車品牌——歐拉的發布,更是對純電小型車的新標準起到了創建和定義的作用。
  • 研究人員開發「關閉開關」有望解決CRISPR的脫靶效應問題
    近期,來自日本廣島大學和東京醫科齒科大學的一組研究人員,開發了一種很有希望的方法來解決CRISPR-Cas9存在的問題——不必要的遺傳改變,這種方法可在基因編輯器到達關鍵的細胞周期階段之前將其關閉,在這個階段可能會發生更精確的修復。
  • 歐拉好貓告訴你答案
    ……以上均來自歐拉好貓的「靈魂拷問」,請各位作答!說實話,極車君入行這麼多年,親身參與大大小小的新車上市發布會沒有一千應該也有三百場了,自認為也算是經歷過大場面的,可是萬萬沒曾想到11月24日晚間的長城歐拉好貓上市發布會,一開場就把我給搞懵啦——舞檯燈光暗下之後,沒有主持人開場,沒有音樂伴奏,沒有歌舞表演,沒有……大屏幕上直接打出了歐拉好貓五款車型的市場指導價。「我的天呢!這是犯的啥低級錯誤啊,後臺場控按錯鍵啦?」
  • 歐拉是如何破解當時的世紀數學難題(巴塞爾問題)的
    28歲的物理學教授萊昂哈德·歐拉在1734年發表了一個解決方案,引起了人們的關注。巴塞爾問題:正整數的平方的倒數和是多少?這句話被總結為:為了解決巴塞爾問題然而,當歐拉將其應用於巴塞爾問題時,得到了令人興奮的結果。我們可以用它的零(根)和一個比例因子來定義一個多項式函數。
  • Unity項目開發過程中常見的問題,你遇到過嗎?
    事實上Unity引擎是一個很靈活的引擎,根據團隊開發遊戲類型的不同,對人員的要求也有差異,所以不能一概而論。但是,一些在Unity項目開發過程中常常會遇到的問題還是可以總結一下的。下面我就來聊聊實際工作中,一個項目組可能會遇到的問題吧。