{"version":2,"relationshipURLBase":"https://codingai-lec03.pages.dev/course/notebook-blocks/56ecbeb770fc4539a3f66c6cf658820a.html","relationshipResolution":"Resolve relative relationship URLs against relationshipURLBase; complete records and absolute URLs are in blocks.","title":"1. 让错误暴露，而不是把错误当正确示范 · 实现代码","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/56ecbeb770fc4539a3f66c6cf658820a.html","markdown":"https://codingai-lec03.pages.dev/course/notebook-blocks/56ecbeb770fc4539a3f66c6cf658820a.md","pages":[{"id":"reading-opening","title":"1. 让错误暴露，而不是把错误当正确示范 · 实现代码","unit":"1. 让错误暴露，而不是把错误当正确示范 · 实现代码","unitId":"notebook-blocks/56ecbeb770fc4539a3f66c6cf658820a","chapter":"course","number":1}],"aliases":[{"oldId":"b-3402db48e8d9314926a3257d","targetId":"b-3402db48e8d9314926a3257d","page":"reading-opening","operation":"move","beforeSHA256":"ee0f99ad7c7d0d958d3e0d80348bfe5a62a81423953405ed50add20d633934dd","afterSHA256":"ee0f99ad7c7d0d958d3e0d80348bfe5a62a81423953405ed50add20d633934dd","reason":"Same source body in authored semantic page"},{"oldId":"b-33b1cc56341690b21f540829","targetId":"b-33b1cc56341690b21f540829","page":"reading-opening","operation":"move","beforeSHA256":"9abb0ce195aba130b9ba53b82ed5f2892b636a01bc8848f712b38b05c9675e8f","afterSHA256":"9abb0ce195aba130b9ba53b82ed5f2892b636a01bc8848f712b38b05c9675e8f","reason":"Same source body in authored semantic page"},{"oldId":"b-bc347ac4055f43d1caba826f","targetId":"b-bc347ac4055f43d1caba826f","page":"reading-opening","operation":"move","beforeSHA256":"e91f24e4e4ca40e2099a0d81d30db6568f4bf2074b499eeee6e3959617bd97ac","afterSHA256":"e91f24e4e4ca40e2099a0d81d30db6568f4bf2074b499eeee6e3959617bd97ac","reason":"Same source body in authored semantic page"},{"oldId":"b-e4a656625aa03ba99c0f387c","targetId":"b-e4a656625aa03ba99c0f387c","page":"reading-opening","operation":"move","beforeSHA256":"3f002b87ee5d2038f92b49a8b54826e9b65444b765dddaea38342c0fba3e3d3b","afterSHA256":"3f002b87ee5d2038f92b49a8b54826e9b65444b765dddaea38342c0fba3e3d3b","reason":"Same source body in authored semantic page"},{"oldId":"b-5dea2dd1b3d5107dc46f0683","targetId":"b-5dea2dd1b3d5107dc46f0683","page":"reading-opening","operation":"move","beforeSHA256":"29d1974b75143354c549506118c83d57ae7973c4a80518e01c852adc807e20a6","afterSHA256":"29d1974b75143354c549506118c83d57ae7973c4a80518e01c852adc807e20a6","reason":"Same source body in authored semantic page"}],"blocks":[{"id":"b-3402db48e8d9314926a3257d","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/56ecbeb770fc4539a3f66c6cf658820a.html#b-3402db48e8d9314926a3257d","content":"[LAB 15 · 语言指代小练习：目标、参照与关系](/course/notebooks/7dc83786d067465aa76264475db2c62d.html)","sha256":"ee0f99ad7c7d0d958d3e0d80348bfe5a62a81423953405ed50add20d633934dd","chapter":{"id":"course","title":"1. 让错误暴露，而不是把错误当正确示范 · 实现代码"},"unit":{"id":"notebook-blocks/56ecbeb770fc4539a3f66c6cf658820a","title":"1. 让错误暴露，而不是把错误当正确示范 · 实现代码"},"page":{"id":"reading-opening","title":"1. 让错误暴露，而不是把错误当正确示范 · 实现代码","number":1},"sectionTitle":"1. 让错误暴露，而不是把错误当正确示范 · 实现代码","currentQuestion":"1. 让错误暴露，而不是把错误当正确示范 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":null,"nextBlock":"b-33b1cc56341690b21f540829","prerequisites":[],"relatedBlocks":[]},{"id":"b-33b1cc56341690b21f540829","type":"h1","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/56ecbeb770fc4539a3f66c6cf658820a.html#b-33b1cc56341690b21f540829","content":"# 1. 让错误暴露，而不是把错误当正确示范 · 实现代码","sha256":"9abb0ce195aba130b9ba53b82ed5f2892b636a01bc8848f712b38b05c9675e8f","chapter":{"id":"course","title":"1. 让错误暴露，而不是把错误当正确示范 · 实现代码"},"unit":{"id":"notebook-blocks/56ecbeb770fc4539a3f66c6cf658820a","title":"1. 让错误暴露，而不是把错误当正确示范 · 实现代码"},"page":{"id":"reading-opening","title":"1. 让错误暴露，而不是把错误当正确示范 · 实现代码","number":1},"sectionTitle":"1. 让错误暴露，而不是把错误当正确示范 · 实现代码","currentQuestion":"1. 让错误暴露，而不是把错误当正确示范 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-3402db48e8d9314926a3257d","nextBlock":"b-bc347ac4055f43d1caba826f","prerequisites":[{"id":"b-3402db48e8d9314926a3257d","url":"#b-3402db48e8d9314926a3257d","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-bc347ac4055f43d1caba826f","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/56ecbeb770fc4539a3f66c6cf658820a.html#b-bc347ac4055f43d1caba826f","content":"按问题继续","sha256":"e91f24e4e4ca40e2099a0d81d30db6568f4bf2074b499eeee6e3959617bd97ac","chapter":{"id":"course","title":"1. 让错误暴露，而不是把错误当正确示范 · 实现代码"},"unit":{"id":"notebook-blocks/56ecbeb770fc4539a3f66c6cf658820a","title":"1. 让错误暴露，而不是把错误当正确示范 · 实现代码"},"page":{"id":"reading-opening","title":"1. 让错误暴露，而不是把错误当正确示范 · 实现代码","number":1},"sectionTitle":"1. 让错误暴露，而不是把错误当正确示范 · 实现代码","currentQuestion":"1. 让错误暴露，而不是把错误当正确示范 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-33b1cc56341690b21f540829","nextBlock":"b-e4a656625aa03ba99c0f387c","prerequisites":[{"id":"b-33b1cc56341690b21f540829","url":"#b-33b1cc56341690b21f540829","role":"section-title"},{"id":"b-3402db48e8d9314926a3257d","url":"#b-3402db48e8d9314926a3257d","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-e4a656625aa03ba99c0f387c","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/56ecbeb770fc4539a3f66c6cf658820a.html#b-e4a656625aa03ba99c0f387c","content":"RGB规则提框、错误关键词基线、目标/参照/关系与干预","sha256":"3f002b87ee5d2038f92b49a8b54826e9b65444b765dddaea38342c0fba3e3d3b","chapter":{"id":"course","title":"1. 让错误暴露，而不是把错误当正确示范 · 实现代码"},"unit":{"id":"notebook-blocks/56ecbeb770fc4539a3f66c6cf658820a","title":"1. 让错误暴露，而不是把错误当正确示范 · 实现代码"},"page":{"id":"reading-opening","title":"1. 让错误暴露，而不是把错误当正确示范 · 实现代码","number":1},"sectionTitle":"1. 让错误暴露，而不是把错误当正确示范 · 实现代码","currentQuestion":"1. 让错误暴露，而不是把错误当正确示范 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-bc347ac4055f43d1caba826f","nextBlock":"b-5dea2dd1b3d5107dc46f0683","prerequisites":[{"id":"b-33b1cc56341690b21f540829","url":"#b-33b1cc56341690b21f540829","role":"section-title"},{"id":"b-3402db48e8d9314926a3257d","url":"#b-3402db48e8d9314926a3257d","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-5dea2dd1b3d5107dc46f0683","type":"pre","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/56ecbeb770fc4539a3f66c6cf658820a.html#b-5dea2dd1b3d5107dc46f0683","content":"```\n# Detached readonly runs write only to an isolated ephemeral directory.\nimport os, tempfile\n_LAB_WORKDIR = tempfile.mkdtemp(prefix=\"lecture03-lab15-\")\nos.chdir(_LAB_WORKDIR)\nprint(\"ephemeral workdir:\", _LAB_WORKDIR)\n\nfrom pathlib import Path\nimport json, hashlib, platform, sys\nfrom datetime import datetime, timezone\nimport numpy as np\nfrom PIL import Image, ImageDraw\nimport matplotlib\nif 'get_ipython' not in globals(): matplotlib.use('Agg')\nimport matplotlib.pyplot as plt\nfrom matplotlib.patches import Rectangle\nOUT=Path('outputs/lab15');OUT.mkdir(parents=True,exist_ok=True)\nPALETTE={'red':(214,55,55),'blue':(40,105,218),'brown':(146,95,53)}\nboxes=['left-red','right-blue','book']\ndef keyword_match(phrase):\n    if 'red' in phrase and 'left of' not in phrase:return boxes[0]\n    if 'blue' in phrase:return boxes[1]\n    return boxes[0]\nphrases=['red cup','blue cup','cup left of blue cup']\nfor p in phrases:print('historical keyword baseline:',p,'->',keyword_match(p))\nassert keyword_match(phrases[-1])=='right-blue' # This is the demonstrated ERROR.\n```","sha256":"29d1974b75143354c549506118c83d57ae7973c4a80518e01c852adc807e20a6","chapter":{"id":"course","title":"1. 让错误暴露，而不是把错误当正确示范 · 实现代码"},"unit":{"id":"notebook-blocks/56ecbeb770fc4539a3f66c6cf658820a","title":"1. 让错误暴露，而不是把错误当正确示范 · 实现代码"},"page":{"id":"reading-opening","title":"1. 让错误暴露，而不是把错误当正确示范 · 实现代码","number":1},"sectionTitle":"1. 让错误暴露，而不是把错误当正确示范 · 实现代码","currentQuestion":"1. 让错误暴露，而不是把错误当正确示范 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-e4a656625aa03ba99c0f387c","nextBlock":null,"prerequisites":[{"id":"b-33b1cc56341690b21f540829","url":"#b-33b1cc56341690b21f540829","role":"section-title"},{"id":"b-3402db48e8d9314926a3257d","url":"#b-3402db48e8d9314926a3257d","role":"problem-context"}],"relatedBlocks":[]}]}
