原文:The 10 Most Popular Coding Challenge Websites [Updated for 2021],作者:Daniel Borowski

学习编程时提高技能的一个好方法是解决编程挑战。解决不同类型的挑战和难题可以帮助你成为更好的问题解决者、学习编程语言的复杂性、准备工作面试、学习新算法等等。

以下是一些流行的编程挑战网站的列表,我简要说明了每个网站提供的内容。

1. TopCoder

MTryRL4uVza1V87ERWY26L4cFeqD2rgAnW1f

TopCoder 是在线竞争性编程的平台之一。它提供了算法挑战列表,你可以使用他们的代码编辑器直接在线完成。他们受欢迎的单轮比赛每月在特定时间提供几次,你可以在特定时间与他人竞争以最快的速度解决挑战并获得最高分。

TopCoder 上排名靠前的用户都是非常有竞争力的程序员,经常参加编程比赛。排名第一的用户维护着自己的博客,名为 “Petr Mitrichev 的每周算法”,他在其中撰写有关编码竞赛、算法、数学等内容的文章。

2. Coderbyte

sP6ow4n2alliqp5L-p5fVRQC9W0GTws1B9Ig

Coderbyte 提供了 200 多个编码挑战,你可以使用 10 种编程语言中的一种直接在线解决(查看此示例)。挑战范围从简单(找到字符串中的最大单词)到困难(打印图形的最大基数匹配)。

他们还提供一系列算法教程、介绍性视频和面试准备课程。与 HackerRank 和其他类似网站不同,除了 Coderbyte 发布的官方解决方案之外,你还可以查看其他用户针对任何挑战提供的解决方案。

3. Project Euler

plhA-E3btLLYRvc4hi3WxmUpAhu3aoef1o0V

Project Euler 提供了大量计算机科学和数学领域的挑战。挑战通常涉及编写一个小程序来找出一个数学公式或方程的解决方案,例如找到一个系列中每个数字之前的所有数字的数字总和。

你不能在网站上的编辑器中直接编码,你需要在自己的计算机上编写解决方案,然后在他们的网站上提交解决方案。

4. HackerRank

dOpMtufto0gLZiyDOHZ4BVF58S-z393wRlcu

HackerRank 为算法、数学、SQL、函数式编程、人工智能等多个不同领域提供挑战。你可以直接在线解决所有挑战(查看此示例)。

他们为每个挑战提供讨论和排行榜,大多数挑战都附带一篇文章,解释更多关于挑战以及如何处理它以提出解决方案。

目前,如果你不解决问题,那么你就看不到其他人的解决方案。如果你在解决问题之前还尝试查看文章,那么挑战就没有意义了。

举个例子,这里我还没有解决问题,我正在尝试检查其他人提交的内容:

problem-not-solved-yet

在这里,我还没有解决问题,我正在尝试检查文章:

problem-not-solved-lost-point

HackerRank 还为用户提供了通过解决公司赞助的编码挑战来提交申请和申请工作的能力。

5. CodeChef

81eunsDYPAqBSC8KwPpBxhPFTHiqGXp70kMa

CodeChef 是一个位于印度的竞争性编程网站,提供数百个挑战。你可以在他们的在线编辑器中编写代码,并查看根据你的技能水平分为不同类别的挑战集合(查看此示例)。他们拥有庞大的程序员社区,成员们为论坛做出贡献、编写教程并参加 CodeChef 的编码竞赛

6. Exercism.io

Screen-Shot-2019-12-11-at-8.14.45-AM

Exercism 是一个编码挑战网站,提供面向 52 种不同编程语言的 3100 多个挑战。选择你想掌握的语言后,你可以直接在你的机器上解决编码挑战(Exercism 有自己的命令行界面,你可以从 GitHub 下载)。

但是,它与其他挑战网站有点不同,因为你在完成每个挑战后都会与导师一起工作。导师会在线审核你的答案,并在需要时帮助你改进。一旦你的答案获得批准并提交,你将解锁更多挑战。

7. Codewars

QR7cVhZ7FGb6HjaEDu4N5Co1eTMNTbo1JFzq

Codewars 提供了大量由他们自己的社区提交和编辑的编码挑战。你可以在他们的编辑器中以多种语言中的一种直接在线解决挑战。你可以查看每个挑战的讨论以及用户的解决方案。

8. LeetCode

RzWKVwPaLY2SRsWFWk93ZNlzcg8V0Yeav5t7

LeetCode 是一个受欢迎的网站,它提供了 190 多个挑战的列表,可以帮助你准备技术工作面试。你可以使用九种编程语言中的一种直接在线解决挑战。你无法查看其他用户的解决方案,但网站会为你提供你自己的解决方案的统计信息,例如与其他用户的代码相比,你的代码的运行速度有多快。

他们还有一个专门用于准备工作面试的模拟面试部分。他们举办自己的编码竞赛。并且他们有一个文章部分,可以帮助你更好地理解某些问题。

9. SPOJ

MF3wP06V24C7jal2f8NRvAVhS-tAA2vbNDTL

Sphere Online Judge(SPOJ)提供超过 20k 的编码挑战。你可以在在线编辑器中提交你的代码。 SPOJ 还举办自己的比赛,并为用户提供讨论编码挑战的区域。不过,他们目前不像其他一些网站那样提供任何官方解决方案或文章。

10. CodinGame

6l08ZCKDOaoY1TH-PHHHac26McA-c1tIDOPU

CodinGame 与其他网站有些不同,因为你实际上不是简单地在编辑器中解决编码挑战,而是为你直接在线玩的游戏编写代码。你可以在此处查看当前提供的游戏列表,并在此处查看其中的示例。该游戏附带问题描述、测试用例和编辑器,你可以在其中使用二十多种编程语言中的一种编写代码。

尽管该网站不同于上述典型的竞争性编程网站,但它仍然受到喜欢解决挑战和参加比赛的程序员的欢迎。

这个列表基于几件事:我自己使用这些网站的经验、一些谷歌搜索Quora 帖子以及一些文章,比如这篇。我还经常访问一些论坛和 Reddit,例如 r/learnprogramming,看看那里的用户通常会推荐哪些网站。免责声明:我在 Coderbyte 工作,这是上面提到的网站之一。