From 9d535c682670950a9f074afa5ee48535a4678e6f Mon Sep 17 00:00:00 2001 From: Prad Nukala Date: Thu, 24 Sep 2026 15:17:04 -0400 Subject: [PATCH] feat(cli): preserve leading numeric prefixes in Blume group slugs --- apps/cli/sync.ts | 9 +- apps/docs/content/index.mdx | 267 +++++++++++++++++++++++++++++++++++- 2 files changed, 269 insertions(+), 7 deletions(-) diff --git a/apps/cli/sync.ts b/apps/cli/sync.ts index 98de8b4..12281b4 100755 --- a/apps/cli/sync.ts +++ b/apps/cli/sync.ts @@ -475,7 +475,14 @@ for (const sol of ordered) { // An unplanned problem's category may share a folder with a numbered topic // (`Hash Table` warm-ups under topic 1); the numbered one owns the meta. const topic = topics.get(sol.num) ?? { name: sol.category }; - const group = topic.name.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, ""); + // Blume reads a leading `-` on a folder as a sidebar-order prefix and + // strips it from the route (`1-d-…` → `/d-…`), so a slug that would start that + // way keeps the digits glued to the next token (`1d-dynamic-programming`). + const group = topic.name + .toLowerCase() + .replace(/[^a-z0-9]+/g, "-") + .replace(/^-|-$/g, "") + .replace(/^(\d+)-/, "$1"); if (groups.get(group)?.order === undefined) groups.set(group, topic); const name = `${group}/${sol.num}-${sol.slug}.mdx`; const existing = pages.get(sol.num); diff --git a/apps/docs/content/index.mdx b/apps/docs/content/index.mdx index 265288a..dbb11c6 100644 --- a/apps/docs/content/index.mdx +++ b/apps/docs/content/index.mdx @@ -1,11 +1,266 @@ --- -title: Overview -description: Live SRS campaign dashboard — phases, ladder, review queue, gates, and recent attempts, fetched from the SRS Worker. +title: Introduction +description: Structured dependency spine based roadmap for solving DSA Problems on leetcode. +icon: house --- - +## 1. Linear Structures -Live view of the 56-day campaign. Everything below is fetched client-side -from the SRS Worker, so it is always current — no rebuild required. +:::tip +Data is read in one direction, from the first item to the last. The current position is recorded at each step. All later phases use this skill. +::: - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## 2. Nodal & Grid + +:::tip +The data is in separate parts. Each part points to the next part, or sits next to other parts on a flat surface. An index does not find the next item. The pointers or the neighbors give the path instead. +::: + + + + + + + + + + + + + + + + + + + +## 3. Hierarchical + +:::tip +Each part points to one or more parts below it. Those parts do the same. The method that solves a small part also solves the large part. This is recursion. +::: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## 4. Relational + +:::tip +Each part can point to any other part. Loops can occur. The method must visit each part one time only. The order of the parts, or the distance between them, is not given in the data. The method finds it. +::: + + + + + + + + + + + + + + + + + + + + + + + + +## 5. Decision Space + +:::tip +The data has no structure. The method makes one. Each choice makes a new branch. The problem sets the correct method: examine all branches, keep a record of the results already found, or make one choice and do not go back. +::: + + + + + + + + + + + + + + + + + + + + + + + + + + + +