这个系统提供了一个可视化的方式来查看和管理你所有做过的 Codewars 题目。
- 格式:
kata_id|题目名称|难度|路径|完成日期 - 用途: 内部索引,供脚本使用
- 生成: 由
add_kata.sh和sync_kata_list.sh自动维护 - 是否提交: 建议提交到 Git
- 格式: Markdown 格式,带有统计信息和进度条
- 用途: 可视化展示所有题目
- 生成: 由
sync_kata_list.sh自动生成 - 是否提交: 建议提交到 Git
- 特点:
- 📊 统计概览(总数、复习次数、平均值)
- 📈 难度分布图表
- 📝 详细题目列表(带链接)
- 🔄 复习记录追踪
- 🎯 学习进度展示
- 功能:
- 扫描
katas/下所有题目 - 重建
.kata_index索引 - 生成
KATA_LIST.md可视化文件
- 扫描
- 使用:
./sync_kata_list.sh
添加题目或复习时会自动同步:
# 添加新题目 - 自动同步
./add_kata.sh <kata_id>
# 添加复习 - 自动同步
./add_kata.sh <kata_id> --review如果你手动修改了题目,需要手动同步:
./sync_kata_list.sh输出示例:
开始同步题目列表...
1. 重建题目索引...
已备份旧索引
✓ 索引已更新,共 12 题
2. 收集统计信息...
3. 生成 KATA_LIST.md...
✓ KATA_LIST.md 已生成
✅ 同步完成!
📊 统计信息:
总题目数: 12
总复习次数: 3
已复习题目: 1
📖 查看: cat KATA_LIST.md
# 在终端查看
cat KATA_LIST.md
# 或者用 Markdown 编辑器打开
code KATA_LIST.md # VS Code
# 或在 GitHub/GitLab 上查看(自动渲染)显示总题目数、复习次数、平均复习次数
## 📊 统计概览
- **总题目数**: 12
- **总复习次数**: 3
- **平均复习次数**: 0.25以表格和进度条形式显示
| 难度 | 数量 | 占比 | 进度条 |
|------|------|------|--------|
| 4kyu | 3 | 25% | ██░░░░░░░░ |
| 5kyu | 6 | 50% | █████░░░░░ |按难度分组,每个题目包含:
- 题目名称(有复习的会显示 🔄 标记)
- Kata ID
- Codewars 链接(可点击)
- 完成日期
- 本地路径
- 复习次数
- 复习记录(如果有)
#### 6. product of consecutive fib numbers 🔄
- **Kata ID**: 5541f58a944b85ce6d00006a
- **链接**: https://www.codewars.com/kata/5541f58a944b85ce6d00006a
- **完成日期**: 2025-12-02
- **路径**: `katas/5kyu/005_product_of_consecutive_fib_numbers_5541f58a944b85ce6d00006a`
- **复习次数**: 3
- **复习记录**:
- Review #1: 2025-12-02
- Review #2: 2025-12-02
- Review #3: 2025-12-02显示各难度完成情况和复习统计
## 🎯 学习进度
### 按难度完成情况
- ✅ 4kyu: 3 题完成
- ✅ 5kyu: 6 题完成
### 复习情况
- 📌 已复习题目: 1 题
- 📈 总复习次数: 3 次
- 🎖️ 最常复习: product of consecutive fib numbers (3次)# 方法 1: 比对数量
DISK_COUNT=$(find katas -name "lib.rs" -type f | wc -l)
INDEX_COUNT=$(grep -v "^#" .kata_index | grep -v "^$" | wc -l)
echo "磁盘题目: $DISK_COUNT"
echo "索引题目: $INDEX_COUNT"
# 方法 2: 直接重建(最安全)
./sync_kata_list.sh如果索引损坏或丢失:
# 备份旧索引(如果存在)
cp .kata_index .kata_index.backup
# 重建
./sync_kata_list.sh脚本会:
- 自动备份旧索引为
.kata_index.bak - 扫描所有
katas/下的题目 - 从
lib.rs提取信息 - 重建索引和列表
# 检查是否有题目没在索引中
for kata_dir in katas/*/*; do
if [ -d "$kata_dir" ] && [ -f "$kata_dir/src/lib.rs" ]; then
KATA_ID=$(grep "^//! Kata ID:" "$kata_dir/src/lib.rs" | sed 's/^\/\/! Kata ID: //' | tr -d ' ')
if ! grep -q "^$KATA_ID|" .kata_index; then
echo "缺失: $kata_dir"
fi
fi
done如果发现缺失,运行 ./sync_kata_list.sh 即可修复。
编辑 sync_kata_list.sh,在生成 KATA_LIST.md 的部分修改:
# 大约在第 100-200 行
echo "#### $item_num. $name$review_marker" >> "$OUTPUT_FILE"
# ... 可以添加更多字段或改变顺序在脚本的统计部分添加新的计算逻辑:
# 例如:统计本周完成的题目
THIS_WEEK=$(grep "2025-12-" .kata_index | wc -l)
echo "- **本周完成**: $THIS_WEEK" >> "$OUTPUT_FILE"# KATA_LIST.md 可以直接分享或推送到 GitHub
git add KATA_LIST.md .kata_index
git commit -m "Update kata list"
git push在 GitHub 上,Markdown 会自动渲染,非常美观!
# 在列表中搜索
grep -i "fibonacci" KATA_LIST.md
# 或使用管理工具
./manage_kata.sh search fibonacci# 查看统计
./manage_kata.sh stats
# 或查看详细的 KATA_LIST.md
cat KATA_LIST.md | head -30# 转换为 HTML(需要 pandoc)
pandoc KATA_LIST.md -o kata_list.html
# 转换为 PDF(需要 pandoc 和 LaTeX)
pandoc KATA_LIST.md -o kata_list.pdf添加到 cron 或 Git hooks:
# .git/hooks/pre-commit
#!/bin/bash
./sync_kata_list.sh > /dev/null 2>&1
git add KATA_LIST.md .kata_index创建一个每日脚本:
#!/bin/bash
TODAY=$(date +%Y-%m-%d)
TODAY_COUNT=$(grep "$TODAY" .kata_index | wc -l)
echo "今日完成: $TODAY_COUNT 题"解决:
./sync_kata_list.sh检查:
# 确认脚本可执行
ls -l sync_kata_list.sh
# 手动运行
./sync_kata_list.sh原因:lib.rs 中的元信息格式不正确
修复:
- 打开对应的
lib.rs - 确保有这些行:
//! Title: xxx //! Kata ID: xxx //! Rank: xkyu //! Completed: 2025-12-02
- 运行
./sync_kata_list.sh
- 定期同步:建议每完成几道题就运行一次
./sync_kata_list.sh - 提交到 Git:
KATA_LIST.md和.kata_index都建议提交,方便跨设备同步 - 备份:索引文件会自动备份为
.kata_index.bak - 性能:即使有上百道题,同步也只需几秒钟
- README.md - 完整使用文档
- DUPLICATE_PROTECTION.md - 重复检测说明
- QUICKSTART.md - 快速开始
生成时间: 2025-12-02
版本: 1.0