我想練習我的技能,遠離鍵盤(即筆和紙),而且我經歷了像Fizz Buzz這樣的簡單練習題,打印出前N個素數。簡單的編程練習(Fizz Buzz,Print Primes)
什麼是您最喜歡的簡單編程問題?
我想練習我的技能,遠離鍵盤(即筆和紙),而且我經歷了像Fizz Buzz這樣的簡單練習題,打印出前N個素數。簡單的編程練習(Fizz Buzz,Print Primes)
什麼是您最喜歡的簡單編程問題?
我一直在努力http://projecteuler.net/
問題: 在表達式計算結果爲100時,在數字123456789之間的任意位置插入+或 - 符號。條件是不得更改數字的順序。
例如爲:1 + 2 + 3 - 4 + 5 + 6 + 78 + 9 = 100
規劃問題: 在其輸出上述問題的所有可能的解決方案您喜歡的語言寫的程序。
Hannoi的塔非常適合遞歸實踐。
我也會在樣本編程面試問題上進行搜索。
在Steve Yegge的文章Five Essential Phone Screen Questions(在Area Number One:Coding下)中有一些很好的簡單編程問題的例子。我發現這些在筆和紙上很好。另外,同一篇文章中面向對象設計的問題可以在筆和紙上(甚至在你的頭上)完成,我認爲這是一個很好的練習。
相當多的競爭性編程在線網站充滿了樣本問題/挑戰,按「難度」排序。通常,「算法」問題中較簡單的類別將適合我的想法。
例如,檢查出TopCoder(算法部分)!
從除了,2個樣品:
您給出的N個點的列表中可以通過座標(X_I,Y_I)的平面中,和多個R> 0。輸出N個給定點中可以同時由半徑爲R的圓盤覆蓋的最大數量(對於獎勵點數:複雜度?)。
您將得到N個數A1的陣列來安,並要計算a1 * a2 * ... * aN/ai
對我的所有值(所以輸出又是N個元素的數組)不使用除法。提供一個(非天真的)方法(複雜度應該在O(N)乘法中)。
我也很喜歡的項目歐拉,但我想指出的是,這些問題得到真正棘手的真快。在前20個問題之後,他們開始成爲大多數人在半小時內無法解決的問題。另一個問題是,他們中的很多人都用數字來處理數學,這些數字不符合標準整數甚至長變量類型。
如果你想要一個筆和papper類型的行使,我會建議比編碼更多的設計。
其實在紙上編碼很爛並且它讓你幾乎什麼都不學習。工作環境的確很重要,所以在電腦上輸入內容,編譯,看看你做了什麼錯誤,在這裏或那裏使用重構,與你在一張紙上做什麼不相比,所以,你可以做什麼一張紙,雖然是一個有趣的心理鍛鍊是不實際的,它不會太多提高你的編碼技能。
另一方面,您可以在紙上手工設計中型甚至複雜應用程序的體系結構。事實上,我通常這樣做。工程工具(如Enterprise Architect)不夠好,無法替代好的所有手繪圖。
好項目可能是,你會如何設計一個遊戲引擎?類,線程,存儲,物理,將容納所有內容等的數據結構。你將如何啓動一個搜索引擎?你將如何設計模式識別系統?
我發現那種類型的問題更有意義,任何紙張編碼你都可以做。