原作者:Daniel Borowski
原文链接:
https://medium.freecodecamp.org/the-10-most-popular-coding-challenge-websites-of-2016-fb8a5672d22f
授权翻译:程序媛数据结构翻译组
学习编程时,提高技能的一个好办法是解决编码挑战。完成不同类型的挑战和难题有助于学习如何解决问题、了解编程语言的复杂性、准备面试、以及学习新算法等。以下是一些流行的编码挑战网站以及每个网站的简要说明。
Topcode
https://www.topcoder.com/challenges/?pageIndex=1
TopCoder是一个全新的在线竞赛编程平台。它提供了算法问题的题库,你也可以直接在它的网页编辑器上做题。
每个月他们都会定期举行几场十分受欢迎的名为“Single Round Matches”的比赛,在这个比赛中你可以与其他人进行竞赛,比赛中最快解决挑战的人就能获得最高的分数。
在TopCoder上排行高的用户们是非常具有竞争力的,也是各大编程比赛的常客。其中排行最高的用户拥有一个自己的博客名为“Petr Mitrichev 的每周算法”(URL: http://petr-mitrichev.blogspot.com/,需翻墙),他会在博客上写一些与比赛、算法、数学等等的相关文章。
Coderbyte
https://coderbyte.com/
Coderbyt网站提供了可直接在线解决的两百多个编程挑战(参考例子:https://coderbyte.com/language/First%20Factorial),并支持十种编程语言。挑战的难度从简单(例如从一串字符串中找到最大的单词)过渡到困难(例如打印符合图表的最大基数值)。
该网站同时也提供了一系列算法指导,介绍视频和面试准备的课程,不像HackerRank和其他同类型的网站,你可以在任何挑战题目的官方解答旁边查看其他用户的解答。
Project Eluer
英文版:
https://projecteuler.net/
中文翻译站:
http://pe-cn.github.io/
Project Eluer 提供了大量计算机科学和数学领域的挑战。这些挑战一般包括编写一个小程序去解决一个比较困难的数学公式或者方程。例如找到一个数列中所有数字的和
(URL:https://projecteuler.net/problem=551)。
该网站并不提供在线编辑器,你必须在自己的电脑上写下解决方案并上传。
HackerRank
https://www.hackerrank.com/dashboard
HackerRank网站提供了许多不同领域的难题,这些领域包括算法(Algorithms),数学(Mathematics),结构化查询语言(SQL),函数式编程(Functional Programming),人工智能(Artificial Intelligence)等。你可以直接在线解决这些难题。
(https://www.hackerrank.com/challenges/simple-array-sum)
网站为每个难题提供了讨论区和排行榜,并且大部分难题都带有一个自己的专栏,专栏里详细解释了题目以及如何逐步找出解决方法。除评论之外,你无法看到HackerRank上其他用户的解决方法。
HackerRank 同样为用户提供了提交申请和通过解决企业编程难题来获得职位的功能。
CodeEval
https://www.codeeval.com/
CodeChef 是一个印度的竞争性编程网站,它提供了数以百计的挑战。挑战者可以在网站提供的在线编辑器中编写代码,并根据使用者的技能级别查看各种不同类别的挑战集合。
这个网站有一个面向编程者的大型社区。用户可以参与论坛的讨论,编写教程并且参加CodeChef自己举办的编程比赛。
CodeChef
https://www.codechef.com/
CodeEval 跟HackerRank差不多,都是由公司提供一系列的编程任务。优秀的解决方案会帮助你找到一份工作。公司可以在该网站上提供一些任务或者举行一些竞赛去聘任一些开发者。
点击此处查看近期的挑战任务。
(URL:https://www.codeeval.com/accounts/login/?next=/open_challenges/)
Codewars
https://www.codewars.com/
Codewars 提供了打量由该网站自身社区提交和编辑的编程挑战。你可以使用网站提供的支持好几种编程语言的编辑器在线解决这些挑战,并查看关于每个挑战的讨论和其他用户的回答。
LeetCode
https://leetcode.com/
LeetCode是一个评测网站,该网站提供了近200个可以帮助用户准备技术工作面试的挑战。你可以使用该网站提供的一个而已可以使用9种编程语言的在线编辑器去直接解决这些问题。虽然你无法看见其他用户的解决方案,但是网站会给你的方案一些评估的数据,比如和其他用户相比你的代码运行速度有多快。
LeetCode还为用户提供一个了一个专门为面试设计的名为“Mock面试”的板块,网站会举办自己的编程竞赛并提供相关文章来帮助参与者加深对一些特定问题的了解。
SPOJ
http://www.spoj.com/
Sphere Online Judge(SPOJ)是一个在线程序评测平台,该网站提供超过20,000个的编码挑战。你可以把你编辑的代码提交到网站的在线编辑平台。
SPOJ也会举办自己的比赛,并有专设的板块可以供用户讨论这些编码挑战。不过它不会像其它网站一样提供任何官方答案或者评语。
SPOJ
https://medium.freecodecamp.org/the-10-most-popular-coding-challenge-websites-of-2016-fb8a5672d22f
CodinGame和其他几个网站略有不同,因为它不是简单的解决编程器中的编程挑战,而是真正的直接参与编写在线游戏的代码。你可以在这里看到现在提供编程的游戏列表和其中一个案例:
https://www.codingame.com/ide/puzzle/there-is-no-spoon-episode-1
编写游戏的界面包含了一个问题描述、测试样例和一个可以用20多种语言编程的编辑器。虽然这个网站和上面提到的典型的竞技性编程网站不同,但是它在那些喜欢解决挑战和参加比赛的程序员中仍然很受欢迎。
——
以上包括了我自己的使用经验、Goggle搜索、Quoro帖子以及一些其他文章:
➤http://infocreeds.com/top-10-coding-challenges-websites/
➤https://www.linkedin.com/pulse/most-popular-programming-contest-sites-coding-practice-somenath-panda
我也经常光顾一些论坛,比如
https://www.reddit.com/r/learnprogramming/,看看那里的用户通常推荐哪些网站。
附:授权