← Lesson
Reflection and Self-Critique
Joeven
Run
Reset
Python loads on first run
def draft_square(n): return {"kind": "code", "n": n, "out": n * n} def draft_wrong(n): return {"kind": "code", "n": n, "out": n + n} def critic(draft): n = draft["n"] expect = n * n if draft["out"] == expect: return {"ok": True, "score": 1} return { "ok": False, "score": 0, "error": "expected " + str(expect) + " got " + str(draft["out"]), } def reflect_loop(make_draft, n, max_tries=3): for i in range(1, max_tries + 1): d = make_draft(n) c = critic(d) print("try", i, "out", d["out"], "critic", c) if c["ok"]: return d if i == 1: make_draft = draft_square return {"cannot": "critic rejected"} print("fixed", reflect_loop(draft_wrong, 4)) print("already good", reflect_loop(draft_square, 5))
Run to execute this in your browser. Nothing is sent to a server.