先膜拜个大佬:

在Codewars上做JavaScript算法题是一种怎样的体验? - 千里冰封二瓣之的回答 - 知乎 https://www.zhihu.com/question/53766913/answer/212285498

背景

之前阅读《The Little Schemer》和《The Seasoned Schemer》这两本书,感觉需要找一个地方来练习和提升我对Scheme语言的理解和技巧,而且刚好莎莎推荐了《Essentials of Compilation_ An Incremental Approach in Racket》这本书作为编译原理的入门书,就决定来练习Scheme的方言Racket。虽然目前LeetCode也能支持Racket,但是用Racket做Leetcode的题目总觉得有点别扭,而且LeetCode对于练习一个新语言来说并不是那么的友好,于是转到Codewar来做些练习。

Codewar介绍

Codewar支持的语言相当的丰富,在这里做语法题目练习就很方便,它提供了不少语言的测试框架和测试样例,在本地搭建好环境后,就可以实现在本地运行并进行测试,自己随意的打印字符串打印变量,添加测试样例这些东西来调试代码,这点就比Leetcode强很多,体验很棒。

CW 支持的语言:

image-20230628005438600

个人体会及难度设置

Codewar分为8个等级,5 - 8 kyu的题目比较简单,适合熟悉一些比较基本的语法,3 - 4kyu的题目难度适中,非常适合锻炼编程能力,尽管有些3kyu的题目让我感觉并不比2kyu的题目简单(比如这道Prime counting)。从4kyu开始的题目就需要结合很多其他的知识来解题(比如编译原理, TCP状态机函数式编程 … )。1 - 2 kyu 我本人目前也没写过几道,而且好像不少编译器相关的题目,就暂时还没能力去解题。

CW还有不少不同系列的题目,他们从难度较低的题目开始一步步引导你去完成这一系列的题目,比如Path Finder 系列,从DFS、BFS到优先队列搜索及启发式搜索一点点加大难度;Esolang Interpreters系列,引导你完成一个解释器…

综上,我个人觉得 LeetCode更偏向于去应付面试和练习算法,而Codewar的题目更适合锻炼自己的工程编程能力,CW中既包含基础算法题,也包含语言特性题,设计模式题,系统设计题,编译器题… 等等,这些题目很有挑战性,更加贴近于实际的应用场景。