exercism 是一个不错的题目网站,但是它的过程并不是很方便,需要下载,构建测试才能知道,你的对错。所以有没有方便点的方式呢?
网页练习功能
这项功能是借助mdBook工具完成的,在 mdBook 生成的静态页面中,Rust 代码可以直接执行,它的工作原理是 js 底层与 Rust 游乐场 API 的交互。但是,原有的实现并不是 Rust 测试模式,所以我们要改些事情。(请往下阅读)
TODO
我们要改造的关键:
- theme/book.js改造- [x] 使用cargo test
- [x] 合并用户输入与测试用例
 
- [x] 使用
修改默认主题的book.js,如果你对这个修改过程感兴趣,请查阅使用 Cargo test
- [x] 自动化测试静态页面的代码执行。
为了对改造代码的有效性,有一定了解,我选择对页面进行自动化测试,我把它放在了github 上,不过我不建议你自行运行,因为会耗费时间与计算机资源,甚至无法完整通过测试(需要浏览器,打开 88 个网页)。其中借助 webdriver 测试项目,如有相关需求,可以自行了解,它的 API 还是很好用的。
说明
每个练习网页主要分为四个部分
- 
- 说明/题目
 
- 
- 未完成的代码(可编辑,直接运行就好)
 
- 
- 测试代码(不可编辑)
 
- 
- 示例答案(不可编辑,直接运行就好)
 
中文翻译列表
每个练习,最初来自英文人群,所以可能在某些说明上,和我国国情并不吻合,如遇到这种情况,完全可以 Issue/PR 该 github 项目,改成符合国情的问题。
测试代码与未完成代码之间,会有重叠的库导入(因我会把他俩合并,扔给 Rust 游乐场),所以需要修正。
还有,每个练习本身,都是完整的 Cargo 项目。其中自然少不了对其他非内置箱子的导入,在这时,我能做的,只是提示你们,某某项目无法通过网页测试(因,Rust 游乐场并没有该箱子):
- [x] 为中文校对,但有时出题的人,就只是搬维基百科的资料,所以,题目描述可能不是说百分百贴切。
- >为测试代码修正。
- no具有非内置箱子,无法编译成功, 需要非内置的其他箱子,这时,只能说句“抱歉,要本机下载”。
易
- [x] >hello world
- [x] >千兆秒 >< Gigasecond)
- [x] >闰年 >< Leap
- [x] >雨滴声 >< Raindrops
- [x] >反转字符串 >< Reverse String
- [x] >第 n 个素数 >< Nth Prime
- [x] >迟钝孩子 >< Bob
- [x] >啤酒之歌 >< Beer Song
- [x] >谚语串烧 >< Proverb
- [x] >平方差 >< Difference Of Squares
- [x] >倍数之和 >< Sum Of Multiples
- [x] >谷物 >< Grains
- [x] >勾股数 >< Pythagorean Triplet
- [x] >素数因子 >< Prime Factors
- [x] >子串 >< Series
- [x] >水仙花数 >< Armstrong Numbers
- [x] >3n+1 猜想 >< Collatz Conjecture
- [x] >迪菲-赫尔曼密钥交换 >< Diffie Hellman
中等
- [x] >- 鞍点 >< Saddle Points
- [x] >等值线 >< Isogram
- [x] >英文说数字 >< Say
- [x] >游程编码 >< Run Length Encoding
- [x] >图书编号 >< ISBN Verifier
- [x] >数字也能分类 >< Perfect Numbers
- [x] >时钟 >< Clock
- [x] noDOT DSL
- [x] >汉明距离 >< Hamming
- [x] >简单链表 >< Simple Linked List
- [x] >杨辉三角形 >< Pascal’s Triangle
- [x] >字母的分数游戏 >< Scrabble Score
- [x] >全字母句 >< Pangram
- [x] noPaaS-IO-报告 >< Paasio
- [x] >核苷酸计数 >< Nucleotide Count
- [x] >模 10 算法 >< Luhn
- [x] >最大数字子串乘积 >< Largest Series Product
- [x] >单词计数 >< Word Count
- [x] >Atbash 加密 >< Atbash Cipher
- [x] >密码矩形 >< Crypto Square
- [x] >旋转密码 >< Rotational Cipher
- [x] >简单加密 >< Simple Cipher
- [x] >栅栏密码 >< Rail Fence Cipher
- [x] >ETL
- [x] >集合操作 >< Accumulate
- [x] >术语 >< Acronym
- [x] >素数筛 >< Sieve
- [x] >RNA 转录 >< RNA Transcription
- [x] >三角形
- [x] >罗马数字 >< Roman Numerals
- [x] >你所的基本
- [x] >学册
- [x] >二分查找
- [x] >机器人模拟器
- [x] >括号配套
- [x] >Luhn From
- [x] >皇后 攻击
- [x] >保龄球
- [x] >子列表
- [x] >地球年
- [x] >Luhn Trait
- [x] >宏
- [x] >过敏
- [x] >可变长度数量
- [x] >电话号码
- [x] >罗唆
- [x] >比赛
- [x] >自定义 set
- [x] no字母谜题
- [x] >两个桶
- [x] >猪的拉丁文
- [x] >钻石
- [x] >螺旋矩阵
- [x] >回文产品
- [x] no扑克
- [x] >grep
- [x] no音阶生成器
- [x] no十进制
- [x] >字谜
- [x] >蛋白质翻译
- [x] >机器人名称
- [x] >书店