Fuenfte harte Nummer gefunden: eine Tabellenzelle - und die Pruefung dagegen
31_Unsicherheit.md trug in der Uebersicht "Die drei Ansaetze im Ueberblick"
noch die Zeile
| Kapitel | 9.2 | 9.3 | 9.4 |
Die Abschnitte heissen in Version 04 aber 12.4 bis 12.6 - stehengebliebene
Version-03-Nummern, im PDF abgedruckt. Damit ist die Regel "keine
abgeleiteten Zahlen im Quelltext" zum fuenften Mal verletzt gefunden worden.
--check lief daran vorbei, weil der bestehende Ausdruck das Wort unmittelbar
vor der Zahl verlangt ((Kapitel|Abschnitt|...)\s+\d+). Hier steht "Kapitel"
als Zeilenkopf, durch " | " von der Zahl getrennt - \s+ matcht keinen
senkrechten Strich.
pruefe_dateien() bekommt daher eine zweite Pruefung: eine Tabellenzelle, die
nur aus einer Nummer der Form N.N besteht. Sie ueberspringt Codezaeune, weil
abgedruckte Programmausgaben ihre Spalten ebenfalls mit "|" setzen
(40_Finanzdaten.md Zeilen 381-385 waeren sonst fuenf Fehlalarme).
Gegengetestet: die wieder eingebaute Zeile wird mit allen drei Zellen
einzeln gemeldet, nach dem Rueckbau ist der Lauf sauber.
Die Zeile heisst jetzt "Nachzulesen in" und traegt drei {ref:sec:...};
Querverweise 703 -> 706. Referenzwerte in PROGRESS.md auf die gemessenen
Werte nachgezogen (27.015 Zeilen, 1512 KB) - sie lagen zwei Zeilen zurueck.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
b7af2f1d9a
commit
62952ba066
3 changed files with 60 additions and 4 deletions
|
|
@ -267,7 +267,7 @@ Erwartungswert der Kosten ist größer als die Kosten des Erwartungswerts.
|
|||
| Typische Frage | „Wie riskant ist dieser Plan?“ | „Was ist im Mittel am besten?“ | „Was hält auch im schlimmsten Fall?“ |
|
||||
| Stärke | beliebige Kennzahlen, sehr flexibel | nutzt Wahrscheinlichkeiten voll aus | keine Verteilungsannahme nötig |
|
||||
| Schwäche | keine Optimierung | Wahrscheinlichkeiten müssen stimmen | oft übervorsichtig, kostet Ertrag |
|
||||
| Kapitel | 9.2 | 9.3 | 9.4 |
|
||||
| Nachzulesen in | {ref:sec:unsicherheit-monte-carlo-simulation} | {ref:sec:unsicherheit-zweistufige-stochastische-programmierung} | {ref:sec:unsicherheit-robuste-optimierung-gegen-den-worst-case} |
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -227,6 +227,32 @@ def pruefe_dateien() -> list[str]:
|
|||
f"{{ref:...}}-Verweis oder ein Name.")
|
||||
fehlend.append(name)
|
||||
|
||||
# Dieselbe Zahl, aber in einer Tabellenzelle - dort steht das Wort
|
||||
# 'Kapitel' als Zeilenkopf und ist durch ' | ' von der Nummer getrennt, an
|
||||
# dem \s+ oben vorbeilaeuft. Genau so ueberlebte '| Kapitel | 9.2 | 9.3 |
|
||||
# 9.4 |' in 31_Unsicherheit.md den Umbau auf Version 04, wo dieselben
|
||||
# Abschnitte 12.4 bis 12.6 heissen.
|
||||
#
|
||||
# Codezaeune werden uebersprungen: Abgedruckte Programmausgaben setzen
|
||||
# Spalten ebenfalls mit '|' und enthalten legitime Zahlen wie '| 12.6 |'.
|
||||
zelle_re = re.compile(r"^\d{1,2}\.\d{1,2}([ ,]+\d{1,2}\.\d{1,2})*$")
|
||||
for name in DATEIEN:
|
||||
with open(os.path.join(HIER, name), encoding="utf-8") as f:
|
||||
inhalt = f.read()
|
||||
im_codeblock = False
|
||||
for nr, zeile in enumerate(inhalt.split("\n"), start=1):
|
||||
if zeile.lstrip().startswith("```"):
|
||||
im_codeblock = not im_codeblock
|
||||
continue
|
||||
if im_codeblock or not zeile.lstrip().startswith("|"):
|
||||
continue
|
||||
for zelle in zeile.strip().strip("|").split("|"):
|
||||
if zelle_re.match(zelle.strip()):
|
||||
print(f"FEHLER: {name}:{nr} hat die Tabellenzelle "
|
||||
f"'{zelle.strip()}' - eine nackte Abschnittsnummer. "
|
||||
f"Dorthin gehoert ein {{ref:...}}-Verweis.")
|
||||
fehlend.append(name)
|
||||
|
||||
return fehlend
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue