MCPcopy Index your code
hub / github.com/eannchen/leetsolv

github.com/eannchen/leetsolv @v1.2.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.2.0 ↗ · + Follow
600 symbols 2,353 edges 39 files 70 documented · 12%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

LeetSolv

Release Go Report Card CI/CD

English | 繁體中文 | 简体中文

LeetSolv 是一个命令行工具,专为 数据结构与算法 (DSA) 问题复习而设计,带有 间隔重复 (spaced repetition) 功能。支持 LeetCodeHackerRank 平台的题目。它由一个定制的 SuperMemo 2 算法驱动,该算法结合了 熟悉度重要性推理 等变量,避免死记硬背。

零依赖: 完全用纯 Go 实现,不使用第三方库或外部工具——完全控制底层实现。详见 MOTIVATION.md

Demo

目录

安装

Scoop (Windows)

scoop bucket add eannchen https://github.com/eannchen/scoop-bucket
scoop install leetsolv

Homebrew (macOS/Linux)

brew tap eannchen/tap
brew install leetsolv

Shell Script (macOS/Linux)

curl -fsSL https://raw.githubusercontent.com/eannchen/leetsolv/main/install.sh | bash

卸载:

curl -fsSL https://raw.githubusercontent.com/eannchen/leetsolv/main/install.sh | bash -s -- --uninstall

验证安装

leetsolv version
leetsolv help

复习调度系统

自适应 SM-2 算法

与标准 SM-2(Anki 使用)不同,LeetSolv 增加了 重要性推理 因子——专为 DSA 练习设计,而非卡片记忆。熟悉度(5 级)、重要性(4 级)和推理(3 级)决定下次复习日期。随机化防止复习集中在同一天。

graph TD
    A[将 DSA 问题添加到 LeetSolv] --> B[算法应用自适应]
    B --> C[熟悉度等级]
    B --> D[重要性等级]
    B --> E[推理能力等级]
    B --> F[到期惩罚,可选]
    B --> G[随机化,可选]


    H[算法使用 SM-2 简易因子进行计算]
    C --> H
    D --> H
    E --> H
    F --> H
    G --> H

    H --> I[确定下一次复习]

到期优先级评分

到期复习会随时间累积。LeetSolv 按优先级分数排序,让你专注于最重要的问题。

默认公式:(1.5×重要性) + (0.5×过期天数) + (3.0×熟悉度) + (-1.5×复习次数) + (-1.0×简易因子)

Demo

间隔增长曲线

复习间隔根据重要性、熟悉度和推理能力扩展。重要性越高 = 间隔越短,复习越频繁。

SM2 Critical SM2 High SM2 Medium SM2 Low

问题管理

功能

  • CRUD + 撤销:创建、查看、更新、删除问题。撤销上一个操作。
  • Trie 搜索:按关键字、重要性、熟悉度快速过滤。
  • 快速视图:到期/即将到期问题摘要,分页列表。
  • 交互式和批处理模式:交互式运行或直接传递命令。
  • 直观命令:熟悉的别名(lsrm),彩色输出。 Demo

数据隐私 & 安全

  • 无数据收集:LeetSolv 不会将用户数据上传到互联网。
  • 原子写入:所有写入使用临时文件 + 重命名,保证数据一致性。

用法

LeetSolv 可以交互式运行,也可以直接从终端传递命令来运行。

# 启动交互模式
leetsolv

# 或者直接运行命令
leetsolv add https://leetcode.com/problems/two-sum
leetsolv status

# 获取帮助
leetsolv help

查看完整使用指南 (USAGE.md)

配置

通过环境变量或 JSON 配置文件自定义。详见 CONFIGURATION.md

常见问题

问:为什么要使用 LeetSolv 而不是 Anki 卡片?

答:Anki 适合记忆事实,但 DSA 需要更深入的练习。LeetSolv 的 SM-2 算法使用推理、熟悉度和重要性来安排刻意的解题练习——而非死记硬背。

问:我应该添加所有以前解决过的问题吗?

答:不。只添加你想复习的问题。算法使用添加日期来排程——批量添加会创建不切实际的计划。旧问题先重新解决,再添加。

问:使用一段时间后,我积累了太多到期问题。

答:跳过几天后 SM-2 会累积到期问题。使用到期优先级评分专注于高优先级问题。已掌握的问题可以删除——目标是持续练习,而非追踪所有内容。


LeetSolv - 基于自定义 SM-2 算法的 DSA 间隔重复 CLI 工具,助你刻意练习。

Extension points exported contracts — how you extend this code

Command (Interface)
(no doc) [16 implementers]
command/command.go
Rand (Interface)
Rand abstracts random number generation for testability. [2 implementers]
core/scheduler.go
QuestionUseCase (Interface)
QuestionUseCase defines the interface for question use cases [2 implementers]
usecase/usecase.go
Clock (Interface)
(no doc) [3 implementers]
internal/clock/clock.go
FileUtil (Interface)
(no doc) [2 implementers]
internal/fileutil/fileutil.go
Handler (Interface)
(no doc) [2 implementers]
handler/handler.go
IOHandler (Interface)
(no doc) [2 implementers]
handler/io.go
Storage (Interface)
(no doc) [1 implementers]
storage/file.go

Core symbols most depended-on inside this repo

Error
called by 191
internal/errs/codederr.go
Println
called by 58
handler/io.go
Tokenize
called by 44
internal/tokenizer/tokenizer.go
Register
called by 41
command/command.go
Printf
called by 39
handler/io.go
LoadQuestionStore
called by 36
storage/file.go
NewTrie
called by 29
internal/search/trie.go
String
called by 28
core/model.go

Shape

Function 300
Method 230
Struct 54
Interface 9
TypeAlias 7

Languages

Go100%

Modules by API surface

handler/handler_test.go74 symbols
handler/handler.go44 symbols
command/command_test.go43 symbols
usecase/usecase.go36 symbols
command/command.go36 symbols
handler/io.go27 symbols
usecase/usecase_test.go26 symbols
storage/file_test.go25 symbols
internal/tokenizer/tokenizer_test.go23 symbols
core/scheduler.go19 symbols
core/scheduler_test.go18 symbols
internal/clock/clock.go17 symbols

For agents

$ claude mcp add leetsolv \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact