refactor: move DSA notes to org/study_deck_02/

Restructure NeetCode study materials into a dedicated Anki-exportable
deck directory. Separates DSA problem notes from C++ flashcards.

- Move roadmap.org from leetcode/out/ to org/study_deck_02/
- Move 200 note files from org/cpp/dsa/ to org/study_deck_02/dsa/
- Add #+PROPERTY: STUDY_DECK_02 to all org files for org-anki export
- Simplify roadmap format: properties drawer replaces nested headings
- Update NEETCODE backlinks in all note files
- Update extract.mjs and scaffold-notes.mjs for new paths
- Create org/study_deck_02/AGENTS.md with study workflow docs
- Update root and leetcode AGENTS.md
This commit is contained in:
2026-06-01 16:12:21 +08:00
parent 1d88296bf6
commit dfadc1ca48
211 changed files with 2240 additions and 1908 deletions
+5 -4
View File
@@ -4,8 +4,8 @@ import { fileURLToPath } from "node:url";
const __dirname = dirname(fileURLToPath(import.meta.url));
const roadmap = readFileSync(join(__dirname, "out/roadmap.org"), "utf8");
const dsaDir = join(__dirname, "../org/cpp/dsa");
const roadmap = readFileSync(join(__dirname, "../org/study_deck_02/roadmap.org"), "utf8");
const dsaDir = join(__dirname, "../org/study_deck_02/dsa");
const topicSlug = (name) =>
name
@@ -24,7 +24,7 @@ for (const line of roadmap.split("\n")) {
}
const problemMatch = line.match(
/^\*\* TODO (\d+)\. (.+?) :(easy|medium|hard): \[\/\]$/
/^\*\* TODO (\d+)\. (.+?) :(easy|medium|hard):/
);
if (problemMatch) {
const [, num, name, diff] = problemMatch;
@@ -37,8 +37,9 @@ for (const line of roadmap.split("\n")) {
if (existsSync(filePath)) continue;
const relPath = `../../../../leetcode/out/roadmap.org::*${num}. ${name}`;
const relPath = `../../roadmap.org::*${num}. ${name}`;
const content = `* TODO ${num}. ${name} :${diff}:
#+PROPERTY: STUDY_DECK_02
:PROPERTIES:
:NEETCODE: [[${relPath}][Roadmap]]
:END: