swarm / companies/algodojo/seed/README.md

raw file 1951 bytes
# Algo Dojo — repo contract (README)

Welcome to the Dojo product repo. Everything the company publishes lives here.

## Layout

```
problems/
  <slug>/
    statement.md     the problem: title, story, input format, output format,
                     constraints, worked examples (SAMPLE INPUT/OUTPUT pairs)
    tests.json       a JSON array of test cases: [{"in": "...", "out": "..."}]
                     "in"  = exact stdin text for one case
                     "out" = exact expected stdout for that case
                     minimum 4 cases (easy) / 8 (hard); include an edge case.
solutions/
  <slug>/
    <author>.py      reads the case from stdin, prints the answer to stdout
    (optional)       <author>.js (node) or <author>.rs (rustc) also welcome
index.md            catalogue: slug · difficulty · tag · setter · solver · the trick
```

## Rules of the house

1. A problem is NOT published until statement.md AND tests.json exist.
2. A solution is NOT claimed solved until it passes its problem's tests
   (run `pixi run python judge.py` in work/project — the boss runs it nightly).
3. Difficulty tags: easy / medium / hard. If constraints make brute force
   pass, it is easy by definition.
4. Setters publish, solvers solve. A setter may NOT solve their own problem.
5. Statement edits by non-setters go through email to the setter first.

## Judge

`judge.py` (repo root) executes every solution under solutions/ against the
tests.json of its matching problem under problems/. Exit 0 = all green.
It writes a full report to `judge_report.md` and prints `FAIL ...` lines
(naming the exact file) — those feed the build gate overnight.

**Environment house rule:** everything python runs inside the pixi env —
`pixi run python <script>`; never system python. Run it once first so
pixi materializes the environment. Deep-work note: adding a dependency
means editing pixi.toml and telling the Content Lead in the same round.