From cc990c29983679e67c921d727cb02a6fa1e44de1 Mon Sep 17 00:00:00 2001 From: dschlueter Date: Tue, 8 Sep 2026 09:52:41 +0200 Subject: [PATCH] Sechster und siebter Fund: die letzten handgeschriebenen Nummern MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Der Loesungsanhang trug 98 Marken der Bauart "**9.2 — Ansatz waehlen.**", saemtlich aus Version 03, wo Unsicherheit Kapitel 9 war. Heute ist es Kapitel 12, und die Aufgabe wird korrekt als "Aufgabe 12.2" gesetzt. Das war keine Schoenheitsfrage: "Aufgabe 9.2" existiert wirklich - sie gehoert zum Kapitel Metaheuristiken ("Zuggroesse und Temperatur"). Wer die Loesung zu 9.2 nachschlug, landete beim falschen Thema. Beide bisherigen Pruefungen liefen vorbei: Vor der Zahl steht kein Schluesselwort, und es ist keine Tabellenzelle. Zwei Messungen machten die Reparatur billig. In allen 15 nummerierten Abschnitten gab es exakt so viele Loesungen wie Aufgaben, lueckenlos 1..n - nur der Kapitelteil war falsch. Und die acht in Phase 3 ergaenzten Kapitel machten es laengst richtig (**Titel.** ohne Nummer); der Anhang wurde also nicht auf etwas Neues umgestellt, sondern auf das, was seine neueren Teile schon taten. nummeriere_marken() vergibt die Marken jetzt selbst. Der Praefix kommt NICHT aus "# Anhang A:" - der Anhang ist eine Ueberschrift, seine Abschnitte gehoeren aber zu 23 verschiedenen Kapiteln. Er kommt aus {#sec:loesungen-X} -> {#kap:X}; diese Zuordnung gilt geprueft fuer alle 23. Im Quelltext steht "**{loesung} — Titel.**". Siebter Fund unterwegs: neun Verweise auf Denkfehler-Nummern. Saetze wie "siehe Denkfehler 8.1" standen in alter Zaehlung - "8" war in Version 03 das QP/NLP-Kapitel, heute ist es Graphen. Eine blosse Umnummerierung haette sie stillschweigend woanders hin zeigen lassen; das Ziel wurde deshalb fuer jeden einzelnen aus dem Zusammenhang bestimmt und auf {ref:sec:-denkfehler} umgestellt. Einer steckte in einem Programm-Docstring und bekam nach Regel 12 den Kapitelnamen statt eines Verweises. Eine bewusste Abweichung vom Plan: Der Denkfehler bekommt GAR KEINE Nummer. Es gibt je Kapitel genau einen, die zweite Stelle waere immer .1, und er steht ohnehin unter einer nummerierten Ueberschrift. Eine Nummer, die nie variiert, holte nur die Fragilitaet zurueck, die hier beseitigt wird. Auch das folgt den acht neuen Kapiteln, die ihren Denkfehler schon vorher nur mit dem Titel des Raetsels ankuendigen. --check bewacht jetzt alle Familien (Denkfehler N.M, Micro-Quiz N, **N.M — im Anhang) und zaehlt zusaetzlich ab, dass jeder Loesungsabschnitt so viele {loesung}-Marken hat wie sein Kapitel Aufgaben - das faengt eine vergessene oder doppelte Loesung, was keine Textsuche leisten kann. Gegengetestet mit vier kuenstlichen Fehlern auf einmal: alle vier gemeldet, nach dem Rueckbau null. Gegenprobe der Umstellung: Gesamtdokument vorher gesichert, nachher verglichen. 168 geaenderte Zeilen, restlos einer Familie zuzuordnen - 118 Loesungsmarken (138 gesamt minus 20, die in den Kapiteln 1 bis 3 zufaellig schon stimmten), 15 Anhang-Ueberschriften, 15 Kapitel-Callouts, 12 Micro-Quiz, 7 Zeilen mit Verweisen, 1 Docstring. Keine verschobene oder inhaltlich veraenderte Zeile. Ergebnis: 138 Aufgaben, 138 Loesungen, keine ohne Gegenstueck. Micro-Quiz tragen die echten Kapitelnummern. 293 Abschnitte, 720 Querverweise, 327 Indexmarken, PDF unveraendert 725 Seiten, 33 pytest-Tests, 67 netzfreie Programme fehlerfrei (die vier yfinance-Programme scheiterten am Rate-Limit des Anbieters, nicht an dieser Aenderung). Co-Authored-By: Claude Opus 5 --- CLAUDE.md | 21 +- Notebooks_04/finanzdaten.ipynb | 3 +- OR_HTML_04/Notebooks_04/finanzdaten.ipynb | 3 +- ...rations_Research_mit_Python_Version_04.pdf | Bin 3619804 -> 3619617 bytes OR_HTML_04/anhang-loesungen.html | 280 +++++----- OR_HTML_04/assets/search-index.js | 2 +- OR_HTML_04/cpsat.html | 4 +- OR_HTML_04/cvar.html | 4 +- OR_HTML_04/dynamische-programmierung.html | 4 +- OR_HTML_04/einfuehrung.html | 2 +- OR_HTML_04/finanzdaten.html | 135 ++--- OR_HTML_04/fundament.html | 2 +- OR_HTML_04/gesamtdokument.html | 495 +++++++++--------- OR_HTML_04/graphen.html | 4 +- OR_HTML_04/handelsmaschine.html | 4 +- OR_HTML_04/lp.html | 4 +- OR_HTML_04/markowitz.html | 4 +- OR_HTML_04/milp.html | 4 +- OR_HTML_04/oekosystem.html | 2 +- OR_HTML_04/praxisfallen.html | 4 +- OR_HTML_04/programme/Kovarianz_Falle.py | 3 +- OR_HTML_04/qp-nlp.html | 4 +- OR_HTML_04/stichwortverzeichnis.html | 2 +- OR_HTML_04/unsicherheit.html | 4 +- Operations_Research_mit_Python_Version_04.md | 337 ++++++------ Operations_Research_mit_Python_Version_04.pdf | Bin 3619804 -> 3619617 bytes .../10_Einfuehrung_OR.md | 4 +- .../11_Mathematisches_Fundament.md | 4 +- .../12_Python_Oekosystem.md | 4 +- .../20_Lineare_Programmierung.md | 4 +- .../21_MILP.md | 4 +- .../22_CP_SAT.md | 4 +- .../23_Graphen_Fluesse_Touren.md | 4 +- .../30_QP_und_NLP.md | 4 +- .../31_Unsicherheit.md | 4 +- .../32_Dynamische_Programmierung.md | 4 +- .../40_Finanzdaten.md | 7 +- .../41_Markowitz.md | 4 +- .../42_CVaR.md | 4 +- .../43_Handelsmaschine.md | 4 +- .../50_Praxis.md | 4 +- .../90_Anhang_Loesungen.md | 321 ++++++------ .../build_version_04.py | 132 ++++- .../Kovarianz_Falle.py | 3 +- PROGRESS.md | 74 ++- 45 files changed, 1052 insertions(+), 872 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 4a6c31e..874d325 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -66,15 +66,24 @@ sonst fälschlich als sichtbaren Umbruch dar. ## Die wichtigsten Konventionen **Keine abgeleiteten Zahlen im Quelltext.** Das ist die Regel, an der dieses Projekt am -häufigsten gescheitert ist — sie wurde vier Mal an verschiedenen Stellen verletzt gefunden -(Anhang A, 66 Programm-Docstrings, die Übersichtstabellen der Anhänge, `CLAUDE.md` selbst). -Konkret: +häufigsten gescheitert ist — **sieben** Mal an verschiedenen Stellen verletzt gefunden +(Anhang A, 66 Programm-Docstrings, die Übersichtstabellen der Anhänge, `CLAUDE.md` selbst, +eine Tabellenzelle, die 98 Lösungsmarken des Anhangs, neun Denkfehler-Verweise). +Seit dem letzten Fund trägt **keine** Marke mehr eine handgeschriebene Nummer, und `--check` +bewacht jede Familie. Konkret: * Überschriften: `# Kapitel: {#kap: