Add solution notes scaffold and sub-heading format
- roadmap.org: problems now have *** Python and *** C++ sub-headings, plus Notes: links to per-problem org files - scaffold-notes.mjs: creates 199 note files in org/cpp/dsa/<topic>/ with backlinks to roadmap.org - 18 topic folders under org/cpp/dsa/ for NeetCode 150 problems - Updated AGENTS.md with new conventions and workflow
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
import { readFileSync, writeFileSync, existsSync } from "node:fs";
|
||||
import { join, dirname } from "node:path";
|
||||
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 topicSlug = (name) =>
|
||||
name
|
||||
.toLowerCase()
|
||||
.replace(/[^a-z0-9]+/g, "-")
|
||||
.replace(/(^-|-$)/g, "");
|
||||
|
||||
let currentTopic = "";
|
||||
let count = 0;
|
||||
|
||||
for (const line of roadmap.split("\n")) {
|
||||
const topicMatch = line.match(/^\* TODO (.+?) \[/);
|
||||
if (topicMatch) {
|
||||
currentTopic = topicSlug(topicMatch[1]);
|
||||
continue;
|
||||
}
|
||||
|
||||
const problemMatch = line.match(
|
||||
/^\*\* TODO (\d+)\. (.+?) :(easy|medium|hard):$/
|
||||
);
|
||||
if (problemMatch) {
|
||||
const [, num, name, diff] = problemMatch;
|
||||
const slug = name
|
||||
.toLowerCase()
|
||||
.replace(/[^a-z0-9]+/g, "-")
|
||||
.replace(/(^-|-$)/g, "");
|
||||
const code = `${num}-${slug}`;
|
||||
const filePath = join(dsaDir, currentTopic, `${code}.org`);
|
||||
|
||||
if (existsSync(filePath)) continue;
|
||||
|
||||
const relPath = `../../../../leetcode/out/roadmap.org::*${num}. ${name}`;
|
||||
const content = `* TODO ${num}. ${name} :${diff}:
|
||||
:PROPERTIES:
|
||||
:NEETCODE: [[${relPath}][Roadmap]]
|
||||
:END:
|
||||
|
||||
#+begin_src cpp
|
||||
|
||||
#+end_src
|
||||
`;
|
||||
writeFileSync(filePath, content);
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
console.log(`Created ${count} note files`);
|
||||
Reference in New Issue
Block a user