99 lines
8.0 KiB
Python
99 lines
8.0 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
Final U28-U36 word allocation - track all used words to prevent duplicates
|
||
"""
|
||
|
||
# The complete allocation plan
|
||
allocation = {
|
||
"U30": {
|
||
"title": "马戏巡游",
|
||
"story": "马戏团来镇→Bingo逃课→解救动物→被发现→点着花车闯祸",
|
||
"func_words": "quickly(adv)",
|
||
"lessons": [
|
||
("奇怪缺席", [("naughty","adj","淘气的"), ("skip","v","蹦跳走"), ("quickly","adv","快速地"), ("exciting","adj","令人兴奋的")], "Bingo淘气逃课,兴奋蹦跳快速溜走"),
|
||
("花车巡游", [("circus","n","马戏团"), ("band","n","乐队"), ("loud","adj","大声的"), ("clown","n","小丑")], "马戏团花车喧闹登场的感官冲击"),
|
||
("笼中朋友", [("cage","n","笼子"), ("lion","n","狮子"), ("parrot","n","鹦鹉"), ("frightened","adj","害怕的")], "发现笼中动物受惊,解救动机涌现"),
|
||
("暗中营救", [("brave","adj","勇敢的"), ("careful","adj","仔细的"), ("climb","v","攀登"), ("net","n","网")], "鼓起勇气小心攀爬围网潜入"),
|
||
("闯祸时刻", [("fire","n","火"), ("mistake","n","错误"), ("drop","v","掉落"), ("hurry","v","匆忙")], "慌忙中灯笼掉落引发火灾"),
|
||
]
|
||
},
|
||
"U31": {
|
||
"title": "家与家人",
|
||
"story": "父母归来→大家庭团聚→Bingo格格不入→决定离开",
|
||
"func_words": "everyone(pron), off(adv)",
|
||
"lessons": [
|
||
("家人归来", [("parent","n","父/母"), ("drive","n","驱车出行"), ("surprised","adj","惊讶的"), ("everyone","pron","每个人")], "父母驱车归来,每个人都惊喜万分"),
|
||
("热闹屋檐", [("aunt","n","阿姨"), ("uncle","n","叔叔"), ("grandparent","n","祖父母"), ("stairs","n","楼梯")], "亲戚们涌上楼梯齐聚一堂"),
|
||
("格格不入", [("laugh","v","笑"), ("share","v","分享"), ("quiet","adj","安静的"), ("busy","adj","忙碌的")], "大家忙碌分享欢笑,Bingo安静旁观"),
|
||
("血缘之思", [("granddaughter","n","外孙女"), ("grandson","n","外孙子"), ("think","v","认为"), ("age","n","年龄")], "看孙辈与祖父母亲密,想到自己没有年龄"),
|
||
("悄然离开", [("wish","v","希望"), ("dream","n","梦"), ("off","adv","离开"), ("carry","v","携带")], "梦到使命,希望带着回忆悄悄离开"),
|
||
]
|
||
},
|
||
"U33": {
|
||
"title": "森林派对",
|
||
"story": "Bingo办Party邀请朋友→盛宴欢笑→朋友离去→空荡孤独",
|
||
"func_words": "sometimes(adv), nothing(pron)",
|
||
"lessons": [
|
||
("发出邀请", [("party","n","聚会"), ("invite","v","邀请"), ("send","v","发送"), ("message","n","消息")], "Bingo发消息邀请朋友来聚会"),
|
||
("森林盛宴", [("picnic","n","野餐"), ("pancake","n","薄煎饼"), ("salad","n","沙拉"), ("cup","n","杯子")], "森林里铺开野餐毯摆满美食"),
|
||
("欢声笑语", [("dance","n","舞蹈"), ("laugh","n","笑"), ("film","v","拍摄"), ("wonderful","adj","精彩的")], "跳舞欢笑拍照,气氛精彩绝伦"),
|
||
("曲终人散", [("time","n","时间"), ("wave","n","波浪"), ("sometimes","adv","有时"), ("glass","n","玻璃杯")], "时间到了,朋友们有时放下杯子挥手远去"),
|
||
("空荡回响", [("boring","adj","无趣的"), ("nothing","pron","没什么"), ("bowl","n","碗"), ("plate","n","盘子")], "空碗空盘什么都没了,好无聊——孤独降临"),
|
||
]
|
||
},
|
||
"U34": {
|
||
"title": "孤独空谷",
|
||
"story": "生态球衰变→花草枯萎→动物躲藏→情绪崩溃→封闭自己",
|
||
"func_words": "badly(adv), never(adv), opposite(prep)",
|
||
"lessons": [
|
||
("花草凋零", [("plant","v","种植"), ("ground","n","地"), ("dry","v","使变干"), ("fall","v","降落")], "种下的植物从干裂地面掉落——衰败征兆"),
|
||
("动物失踪", [("feed","v","喂养"), ("kitten","n","小猫"), ("puppy","n","小狗"), ("afraid","adj","害怕")], "去喂小猫小狗却找不到,它们在害怕什么?"),
|
||
("无力挽回", [("change","v","变化"), ("lose","v","丢失"), ("difficult","adj","困难的"), ("badly","adv","严重地")], "一切严重变化,失控难以挽回"),
|
||
("呼唤无应", [("mountain","n","高山"), ("shout","v","呼喊"), ("opposite","prep","在对面"), ("never","adv","决不")], "对着对面高山呼喊,回声再也不回应"),
|
||
("关门谢客", [("cry","v","哭泣"), ("terrible","adj","糟糕的"), ("weak","adj","虚弱的"), ("asleep","adj","睡着的")], "哭到精疲力竭,一切糟透了,虚弱地睡去"),
|
||
]
|
||
},
|
||
"U35": {
|
||
"title": "永不离弃",
|
||
"story": "发现异常→召集伙伴→返回生态球→找到Bingo→解开心结",
|
||
"func_words": "inside(adv), someone(pron), something(pron)",
|
||
"lessons": [
|
||
("发现异常", [("call","v","打电话"), ("idea","n","想法"), ("must","adj","必须"), ("matter","n","问题")], "打电话给伙伴:出问题了,有个想法,必须行动"),
|
||
("集结出发", [("bring","v","带来"), ("map","n","地图"), ("ticket","n","票"), ("trip","n","旅行")], "带上地图买好车票,出发旅行去找Bingo"),
|
||
("寻找Bingo", [("inside","adv","在里面"), ("move","v","移动"), ("turn","v","转"), ("someone","pron","某人")], "在里面移动转弯搜寻,感觉有人在"),
|
||
("解开心结", [("need","v","需要"), ("mean","v","意味着"), ("should","v","应该"), ("something","pron","某物")], "你需要明白这意味着某种东西——冬眠是自然的"),
|
||
("不再孤单", [("strong","adj","强壮的"), ("sure","adj","确定的"), ("safe","adj","安全的"), ("wait","v","等待")], "你很强壮也很安全,春天会来,等着吧"),
|
||
]
|
||
},
|
||
"U36": {
|
||
"title": "冬假快乐",
|
||
"story": "第一场雪→冬季运动→享受冬天→接纳情绪→成为完整的男孩",
|
||
"func_words": "outside(adv), round(adv)",
|
||
"lessons": [
|
||
("初雪降临", [("weather","n","天气"), ("temperature","n","温度"), ("coat","n","外套"), ("sweater","n","毛衣")], "天气变冷温度骤降,穿上外套毛衣——冬天来了"),
|
||
("冰面滑行", [("ice skating","n","滑冰"), ("ice skates","n","冰鞋"), ("score","v","得分"), ("win","v","赢")], "穿冰鞋滑冰比赛得分赢了——冰上运动欢乐"),
|
||
("雪地欢闹", [("scarf","n","围巾"), ("blanket","n","毯子"), ("outside","adv","在外面"), ("kick","n","踢")], "围着围巾裹着毯子到外面踢雪球"),
|
||
("温暖环绕", [("round","adv","环绕"), ("sweet","adj","甜的"), ("present","n","礼物"), ("light","n","光")], "大家环绕在温暖灯光中交换甜蜜礼物"),
|
||
("完整的我", [("better","adj","较好的"), ("grow","v","成长"), ("free","adj","自由的"), ("lovely","adj","可爱的")], "成长让一切变得更好,自由可爱——完整的Bingo"),
|
||
]
|
||
},
|
||
"U28": {
|
||
"title": "乡村奥德赛",
|
||
"story": "带Bingo认识社区——农场、咖啡馆、田野、村庄、电梯等",
|
||
"func_words": "around(prep), beside(prep)",
|
||
"lessons": [
|
||
("出门探索", [("village","n","村庄"), ("countryside","n","乡村"), ("field","n","田地"), ("tractor","n","拖拉机")], "走出家门来到乡村:田地里拖拉机轰鸣"),
|
||
("农场一日", [("farm","n","农场"), ("farmer","n","农夫"), ("build","v","建造"), ("fence","n","围栏")], "——fence不在词库!换"),
|
||
]
|
||
}
|
||
}
|
||
|
||
# 检查fence
|
||
import subprocess
|
||
result = subprocess.run(['grep', '-P', '^fence\t', '/tmp/wordbank_all.tsv'], capture_output=True, text=True)
|
||
print(f"fence in wordbank: '{result.stdout.strip()}'")
|
||
|
||
# Let me check what building/construction words are available
|
||
result = subprocess.run(['grep', '-P', '(建筑|建造|修)', '/tmp/wordbank_all.tsv'], capture_output=True, text=True)
|
||
print(f"\n建筑相关:\n{result.stdout}")
|