2013-03-06 48 views
11

我希望這不是一個模糊/寬泛/主觀的問題。如果是,請關閉它。無論如何,在幾次編程比賽中(例如谷歌的Code Jam,Facebook的黑客杯等),當我成功地理解了一個問題並且知道如何接近它時,我發現有一半的問題已經被很多人解決了。人們如何快速解決編程競賽?

我的問題是,這些人怎麼這麼好?它是純粹的天才嗎?有經驗嗎?這是否能夠真正快速思考?你會如何建議我提高自己的技能?我會說我是一個稱職的程序員。我最終可以解決其中的一些問題。

此外,每當我檢查獲獎者的代碼,我看到很多正在使用的宏。這對我來說意味着他們有一個模板(比如#define for loop到一些縮寫版本),它們用來更快地編程。這是否有重大的不同?

+0

1)直到你把它做對2)直到你不能錯誤地做到這一點 – Dmitry 2013-03-06 08:57:00

+0

簡而言之,寫很多代碼並專注於你所在的領域。 – Dmitry 2013-03-06 08:57:59

回答

13

問題是,你正在與那些花費大量時間掌握自己的技能來參加這些比賽的人競爭。你不太可能很快趕上任何時間,但...

How do these people get so good? 

有理論知識解決問題和實踐,實踐,再實踐。

Is it pure genius? 

它可以,但實踐可以在合理的程度上彌補它。

Is it experience? 

是的。

Is it the ability to think really fast? 

不是。實踐允許您正確地處理問題,並跳過問題說明中的微不足道的細節。

How would you suggest I improve my skills? 

獲得理論知識和實踐。

Do macros make a significant difference? 

它可能會減少10%的時間,但可能不會更多。

+2

Yeap。無法替代實踐。 – 2013-03-06 09:11:55

7

統計上來說,任何有足夠大量觀衆的編程競賽都會吸引超級人才,他們可以以超高速度製作漂亮優雅的代碼。這就像跑馬拉松。即使世界紀錄約2小時,在4小時內運行它也非常好。不要擔心。

注重代碼質量和高雅,而不是能夠以超高速度生成代碼。練習,玩得開心,不要過多關注其他人的工作速度。

+0

哈哈這是一個令人放心的答案。謝謝:) – 2013-03-06 09:11:16