2013-03-06 46 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