展示 HN:Openleetcode – 本地 LeetCode 运行器,测试用例存放在代码库中
openleetcode 是一个基于开放测试套件构建的本地 LeetCode 运行器,使用 Haskell 编写。它采用一个普通的解决方案文件,找到相应的问题清单,构建一个小型语言特定的执行框架,将其发送到可插拔的执行后端,并在本地判断结果。测试用例存放在代码库中。运行时模板也存放在代码库中。CLI 就是一个连接。$ openleetcode submit ./solution.py --id 1 $ openleetcode submit ./solution.rs --title two-sum 演示 安装 您需要 Docker 作为执行后端。在 Linux 和 macOS 上,安装程序会通过 Docker Compose 尝试为您启动默认的 Piston 后端。在 Windows 上,安装程序仅安装 CLI。请自行提供 Docker,并手动启动后端。Linux 和 macOS:curl -fsSL https://raw.githubusercontent.com/therepanic/openleetcode/main/install.sh | sh Windows PowerShell:irm https://raw.githubusercontent.com/therepanic/openleetcode/main/install.ps1 | iex Docker:curl -fsSL https://raw.githubusercontent.com/therepanic/openleetcode/main/openleetcode.yml -o openleetcode.yml curl -fsSL https://raw.githubusercontent.com/therepanic/openleetcode/main/backends/piston/docker-compose.yml -o piston.yml docker compose -f piston.yml up -d docker compose -f openleetcode.yml -f piston.yml run --rm openleetcode --version 后端可能在首次启动时需要一些时间来安装运行时。后端 openleetcode 当前使用 Piston 作为其执行后端。默认配置指向: http://localhost:2000 从检出中,使用以下命令启动打包的后端:docker compose -f backends/piston/docker-compose.yml up -d 然后检查 CLI 配置:$ openleetcode config list $ openleetcode config set backend.url http://localhost:2000 使用 下载最新的公共数据资产:$ openleetcode download all 按问题 ID 运行解决方案:$ openleetcode submit ./two_sum.py --id 1 按标题运行解决方案:$ openleetcode submit ./solution.cpp --title "two-sum" 当文件扩展名模糊不清时覆盖语言检测:$ openleetcode submit ./main.abc --id 1 --lang python3 更新 openleetcode:$ openleetcode update 语言 该运行器提供以下语言的模板:cpp、rust、python3、python2、ruby、java、csharp、kotlin、go、dart、swift、typescript 每个运行时提供 LeetCode 问题通常所需的小型兼容层:JSON 输出、数组、矩阵、链表、二叉树等。导入和常用库与官方 LeetCode 环境保持接近,因此解决方案应看起来像一个正常的 LeetCode 提交,而不是一个自定义的 openleetcode 程序。 贡献 对于代码更改,您需要具有 Cabal 的 Haskell 工具链。构建 CLI:$ cabal build exe:openleetcode 运行测试套件:$ cabal test core-tests $ cabal test cli-tests 直接运行构建的可执行文件:$ cabal run openleetcode 无需代码的贡献 从 TEST_FORMAT.md 开始。说实话。它是 YAML、运行时模板和评测之间的契约。每个问题都是一个包含 manifest.yaml 的目录:tests/1-500/1. two-sum/manifest.yaml tests/1-500/1. two-sum/sol.py tests/1-500/1. two-sum/sol.cpp 也有辅助脚本,因为我们都是人类,手动编写第 39 个边缘案例时,人们就开始与电子表格讨价还价。$ python generate_prompt.py two-sum $ python spartan.py --skip 0 --limit 10 --no-generate --concurrency 5 $ python molotov.py --skip 0 --limit 10 --concurrency 5 generate_prompt.py 从问题描述、代码片段和参考 Python 解决方案中构建 LeetCode 问题的提示。spartan.py 对同一批次进行处理,并可以通过 OpenRouter 询问 LLM 将清单草拟到 generated_problems/ 中(当设置了 OPENROUTER_API_KEY 时)。molotov.py 从那些生成的文件夹中填充 sol.{lang} 文件,重用 prompt.txt 和 sol.py。将输出视为具有无限耐心的初级贡献者:有用、快速,并且仍然非常需要审核。 状态 openleetcode 尚年轻,一些清单的质量会好于其他清单。这没有关系。关键是评测和测试没有被封闭在某个地方。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡