Make the blind-reading panel and packet name parameters now that reading is the standing instrument
This commit is contained in:
parent
3075566104
commit
276c85b4be
1 changed files with 23 additions and 7 deletions
|
|
@ -706,8 +706,19 @@ def read_texts(p: str, uid: str) -> dict:
|
|||
return out
|
||||
|
||||
|
||||
def emit_read(p: str, n_units: int = 3) -> None:
|
||||
"""Пакет слепого чтения: ключ пишется ДО ответов, раскладка ОДНА на пару."""
|
||||
def emit_read(p: str, n_units: int = 3, panel: tuple = (), tag_: str = "") -> None:
|
||||
"""Пакет слепого чтения: ключ пишется ДО ответов, раскладка ОДНА на пару.
|
||||
|
||||
⚠ ПАНЕЛЬ И ИМЯ ПАКЕТА — ПАРАМЕТРЫ, И ЭТО НЕ УДОБСТВО. Слепое чтение стало ШТАТНЫМ прибором
|
||||
(решение владельца 20.08: «теперь судим так всё время»), значит панелей будет много. Ключ
|
||||
каждой лежит в СВОЁМ файле: пере-эмиссия с другим составом армов переписала бы раскладку уже
|
||||
прочитанной панели, и ответ читателя стал бы мусором молча — класс, уже стоивший фазе вердикта.
|
||||
"""
|
||||
global READ_PANEL, READ_KEY # noqa: PLW0603
|
||||
if panel:
|
||||
READ_PANEL = tuple(panel)
|
||||
if tag_:
|
||||
READ_KEY = OUT / "blind-keys-rol" / f"rol-KEY-{tag_}.json"
|
||||
cfg = PAIRS[p]
|
||||
cfg["wire"]()
|
||||
full = []
|
||||
|
|
@ -725,8 +736,8 @@ def emit_read(p: str, n_units: int = 3) -> None:
|
|||
"_что": "слепое чтение панели замера «однопроходка как роль»",
|
||||
"_соль": READ_SALT, "_панель": list(READ_PANEL),
|
||||
"_контроль": "Z0 и ZF — две генерации ОДНОЙ боевой связки"}
|
||||
ans = READ_DIR / f"ОТВЕТ-{p}.md"
|
||||
lay = CH.layout(p, f"ROL-ALL|{READ_SALT}", "READER", READ_PANEL)
|
||||
ans = READ_DIR / f"ОТВЕТ-{p}{('-' + tag_) if tag_ else ''}.md"
|
||||
lay = CH.layout(p, f"ROL-ALL|{READ_SALT}|{tag_}", "READER", READ_PANEL)
|
||||
body = [f"# {'КИТАЙСКАЯ' if p == 'zh' else 'АНГЛИЙСКАЯ'} ПАРА — слепое чтение\n",
|
||||
READ_HEAD.format(n=len(READ_PANEL), answer=ans)]
|
||||
for j, (uid, tx) in enumerate(take, 1):
|
||||
|
|
@ -736,13 +747,15 @@ def emit_read(p: str, n_units: int = 3) -> None:
|
|||
body += ["\n---\n", f"## Отрывок {j}, вариант {lab}\n", tx[arm], ""]
|
||||
key.setdefault(p, {})[str(j)] = {"uid": uid, "метки": lay,
|
||||
"знаков": {a: len(tx[a]) for a in READ_PANEL}}
|
||||
(READ_DIR / f"ЧТЕНИЕ-{p}.md").write_text("\n".join(body), encoding="utf-8")
|
||||
(READ_DIR / f"ЧТЕНИЕ-{p}{('-' + tag_) if tag_ else ''}.md").write_text(
|
||||
"\n".join(body), encoding="utf-8")
|
||||
if not ans.exists():
|
||||
ans.write_text(f"# Ответ — пара {p}\n\nПОРЯДОК: \n\nПо вариантам:\n", encoding="utf-8")
|
||||
READ_KEY.write_text(json.dumps(key, ensure_ascii=False, indent=1), encoding="utf-8")
|
||||
print(f" {p}: глав {len(take)} · вариантов {len(READ_PANEL)} · "
|
||||
f"{sum(len(tx[a]) for _u, tx in take for a in READ_PANEL) // 1000} тыс. знаков")
|
||||
print(f" пакет → {READ_DIR / f'ЧТЕНИЕ-{p}.md'} · ключ → {READ_KEY} (читателю НЕ давать)")
|
||||
print(f" пакет → {READ_DIR}/ЧТЕНИЕ-{p}{('-' + tag_) if tag_ else ''}.md · "
|
||||
f"ключ → {READ_KEY.name} (читателю НЕ давать)")
|
||||
|
||||
|
||||
def score_read() -> None:
|
||||
|
|
@ -779,8 +792,11 @@ if __name__ == "__main__":
|
|||
elif a[0] == "--canon":
|
||||
canon()
|
||||
elif a[0] == "--emit-read":
|
||||
_pan = next((x.split("=", 1)[1].split(",") for x in a if x.startswith("--panel=")), [])
|
||||
_tag = next((x.split("=", 1)[1] for x in a if x.startswith("--tag=")), "")
|
||||
_n = next((int(x.split("=", 1)[1]) for x in a if x.startswith("--n=")), 3)
|
||||
for x in ([y for y in a[1:] if y in PAIRS] or list(PAIRS)):
|
||||
emit_read(x)
|
||||
emit_read(x, _n, tuple(_pan), _tag)
|
||||
elif a[0] == "--score-read":
|
||||
score_read()
|
||||
elif a[0] == "--coverage":
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue