学JavaScript的好去处——codewars


一个OJ,又不仅仅是OJ

codewars可以说是一个面向Web程序员的OJ。与大多以C/C++为解题语言的OJ不同,codewars主要支持JavaScript、Python、Ruby、Java等Web开发常用的语言。

在我看来,codewars的主要特点有:

  • 题目由易到难,逐渐过渡,上手容易
  • 个人升级和组队排行模式,大大激发做题兴趣
  • 完成题目后即时可见其他人的答案,并有答案投票机制,由此可以学到很多东西
  • 一定积分后能够自己出题及提前体验新题

不仅如此,codewars的代码编辑界面非常整齐有序,用户体验很好。不过,codewars的网页加载普遍比较慢,有时代码需要多提交几遍。但总的来说,它还是一个方便易用的OJ。


在codewars中升级打怪

codewars作为一个OJ,其中的“怪”自然是指题目了。codewars中的每道题目称为一个Kata,根据其难度不同具有一定的荣誉值(Honor)。荣誉不断积累则会获得升级。各个等级如下:

levels in codewars

每道题目都会标注不同的kyu值,kyu值越小其荣誉值越多,完成后也就能更快地升级。

与一般OJ着重于算法不同,codewars中的不同级别可以训练不同方面的技能。官网这样解释:

White (Beginner): simple language features

Yellow (Novice):complex language features, simple algorithms

Blue (Competent):complex algorithms, simple design patterns, simple regex, simple detailed requirements

Purple (Proficient):complex design patterns, complex regex, complex detailed requirements, simple reverse engineering, intermediate meta-programming, simple APIs

Black (Expert):complex meta-programming, complex APIs, complex reverse engineering, AI, interpreters, expert regex/string parsing, expert design patterns?

在codewars中可以看到个人积分榜和战队(Clan)积分榜。据我观察,除了主动创建战队,codewars还会根据用户资料自动为用户创建战队。


积累荣誉的108种方法

除了挑战Kata来赢得荣誉值这种最基本的方式,还有几种方法来获得荣誉:

  • 邀请队友加入codewars
  • 出题
  • 参与Kata的解法讨论
  • 将Kata翻译为其他语言

总之,如果你想对JavaScript、Python有更多了解,提升自己的技能,来到codewars,你会觉得YES!