ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

开发者指南:如何为cracking-the-coding-interview贡献新算法解法?PR工作流与测试数据集规范全解析

2026/8/25 18:00:04 拓冰建站 浏览量
开发者指南:如何为cracking-the-coding-interview贡献新算法解法?PR工作流与测试数据集规范全解析 开发者指南如何为cracking-the-coding-interview贡献新算法解法PR工作流与测试数据集规范全解析【免费下载链接】cracking-the-coding-interview:books: C and Python solutions with automated tests for Cracking the Coding Interview 6th Edition.项目地址: https://gitcode.com/gh_mirrors/cra/cracking-the-coding-interview本文为开发者提供 cracking-the-coding-interview 项目的完整贡献指南从本地一键构建到 C/Python 双语言解法的文件命名规范再到单元测试用例注册与测试数据集生成规范帮助你写出能被 CI 一次跑绿的高质量 PR。一、为什么这个项目值得贡献这个项目收录了《Cracking the Coding Interview》第 6 版全部题目的C 与 Python 解法目前已完成139 道带自动化测试的算法题C 81 道 Python 58 道。它最大的特点是每个解法都配套单元测试并且每次提交都会跑全量测试测试覆盖率超过 90%。核心目录与文件一览路径作用cpp_solutions/C 解法按章节组织含第三方依赖 Catch 与 Eigenpython_solutions/Python 解法每章一个包含__init__.pytests.cppC 单元测试入口Catch 框架tests.pyPython 单元测试入口unittest 框架Makefile一键构建与测试脚本configure/test/test_coverageCMakeLists.txtC 编译配置登记所有.cpp源文件.travis.yml持续集成配置每次提交自动跑配置覆盖率测试二、贡献前准备3 分钟搭好本地环境 ⚙️在根目录执行以下命令即可克隆仓库git clone https://gitcode.com/gh_mirrors/cra/cracking-the-coding-interview cd cracking-the-coding-interview随后按操作系统执行对应目标详见Makefile与README.md的 Building 一节Ubuntu / WSLmake configure-ubuntu自动安装 build-essential、cmake、python3-numpy 并构建 EigenmacOSmake configure-macWindows官方建议在 WSL 中按 Ubuntu 流程开发或使用 Visual Studio CMake 模式见README.md附录配置完成后任何时候都可以用下面两条命令自检make test # 全量跑 C Python 单元测试 make test_coverage # 额外生成 Python 行级覆盖率报告需先 pip install coverage三、作者的工作流测试先行解法跟上 维护者在README.md中给出了标准开发循环这正是你贡献 PR 应该遵循的节奏读题并编码题目定义——先把单元测试写出来执行make test观察哪些用例失败补全解法实现直到make test全部通过。在这个项目里单元测试本身就是题目的定义。所有 C 用例集中在tests.cppCatch 的TEST_CASE所有 Python 用例集中在tests.pyunittest 的TestCase类。这意味着贡献一个解法 解法代码 测试用例 必要的测试数据三者缺一不可。四、PR 工作流6 步完成一个新解法 第一步确定贡献目标查看README.md目录中各章的完成度进度表挑一个0/N或x/N未完成的题目例如第 6 章 Math and Logic0/10第 7 章 Object Oriented Design0/12第 17 章 Hard1/26C/3/26Python第二步按命名规范新建文件C 解法放在cpp_solutions/chapter_XX_xxx/下文件命名必须为problem_XX_YY_小驼峰命名.h与同名.cpp例如参考 problem_10_07_missingInt.h。纯模板函数可以只写.h如第 2 章链表题。Python 解法放在python_solutions/chapter_XX_xxx/下命名为problem_XX_YY_snake_case.py下划线分隔。第三步注册到头文件/包中C在对应章节的chapter_XX_includes.h中加一行#include problem_XX_YY_xxx.hPython确认该章节目录存在__init__.py已有目录无需改动。第四步把源文件登记进构建系统C 的.cpp文件必须加入根目录CMakeLists.txt的SOURCE_FILES列表否则不会参与编译。模板类函数.h实现则不需要。第五步编写并注册测试用例C在tests.cpp新增TEST_CASE(Chapter XX - Problem YY - funcName(), test)用REQUIRE断言。注意先写正例再写反例并覆盖空输入等边界可参考tests.cpp中字符串旋转题对空串的断言。Python在tests.py顶部按字母序补充from python_solutions.chapter_XX_xxx import problem_XX_YY_xxx as p_x_y再新增unittest.TestCase子类。第六步本地全绿后提 PR依次执行make test与make test_coverage确认全量通过且覆盖率不下降。按README.mdContributing 要求PR 提交到master分支。CI配置见 .travis.yml会自动执行make configuremake test_coverage绿灯后方可合并。 小提示链表、二叉树等题目可直接复用现成基础设施——第 2 章的vectorToList/listToVector工具函数和tree_basics.py避免在测试里手写节点构造代码。五、测试数据集规范小数据模拟大场景 对40 亿个数找缺失数这类超大规模题目项目采用缩小量级、保留性质的数据集策略参考实现位于生成器源码generate_random_number_file.cpp数据集文件random_number_dataset.csv4000 个数与random_number_dataset_32000.csv独立构建脚本同目录的CMakeLists.txtC17 标准其规范要点如下命令行参数驱动generate_random_number_file filename.csv max_value count同一生成器可复用于不同量级量级压缩有依据第 10.7 题原题是 2^32 范围内的 40 亿个数测试集刻意压缩为[1, 4300]区间内的 4000 个数既保证测试速度又覆盖同一逻辑分支CSV 格式固定每行一个数字 逗号 换行如411,\n便于逐行流式读取验证解法确定性随机基于std::random_device播种的 Mersenne Twister 生成均匀整数。贡献新题目时若题目暗示大规模输入请遵循同一模式把生成器放进独立的chapter_XX_dataset_generation目录数据集以.csv随仓库提交而不是在测试运行时才随机生成避免 CI 结果不可复现。六、除了新解法这些方向同样受欢迎 README.md的 Contributing 一节还列出了欢迎的开源任务清单修复 bug补全或优化进度表中任意未完成题目的解法双语言都算增加单元测试进一步提升覆盖率用 gcov 实现C 自动化覆盖率测量为 Python 与 C 集成 Coveralls 覆盖率报告为缺少文字说明的题目补充解法描述。七、上手建议从哪道题开始给新贡献者的最短路径建议首次提交从进度表中挑第 6 章或第 17 章的一道 C 题目只做实现 用例最小闭环想练工程能力尝试第 4 章0/12的树形题复用chapter_02_includes.h中的节点结构想练基础设施认领 gcov 覆盖率任务直接修改 CI 配置与 Makefile。只要遵循测试先行、命名规范、构建登记、全绿提交四原则你的第一个 PR 就能像项目已有解法一样成为经过验证、可以放心参考的活代码。【免费下载链接】cracking-the-coding-interview:books: C and Python solutions with automated tests for Cracking the Coding Interview 6th Edition.项目地址: https://gitcode.com/gh_mirrors/cra/cracking-the-coding-interview创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考