#!/usr/bin/env python3 """Fix answer distributions for all P4 rewrite sets""" import ast, sys # The rewrite script as a string - we'll patch specific answer values and option orders FIXES = {} # For each QSID block, define: (qs_index, new_answer_index, new_options_list) # Options list: if provided, replace the options to shift the correct answer to target position # 021301 first: Q1:A, Q2:A, Q3:B, Q4:B, Q5:A → fix to A=2,B=2,C=1 # Change Q2 from 0→2 (move "He does his own stunts" to C), Q4 from 1→2 (move answer to C) FIXES["021301_first"] = { 1: {"answer": 2, "options": ["He has a fake beard", "He looks different at home", "He does his own stunts"], "explanation": "Ben说'He does his own stunts. He is a real professional.',说明这位演员自己做特技动作。选项C为正确答案。"}, 3: {"answer": 2, "options": ["He is kind and helpful", "He looks different at home", "He was brave like a hero"], "explanation": "Lucy说'My neighbour did something brave last week. He was like a hero.',她的邻居做了勇敢的事像英雄一样。选项C为正确答案。"}, } # 021401 first: Q1:A, Q2:C, Q3:B, Q4:B, Q5:B → fix B=3 → move Q4 to C FIXES["021401_first"] = { 3: {"answer": 2, "options": ["Buy a new backpack for hiking", "Read the newspaper at home", "Fix the garden seat"], "explanation": "Ben说'I'm going to repair the garden seat.',他打算修理花园椅子。选项C为正确答案。"}, } # 021401 second: Q1:C, Q2:C, Q3:C, Q4:C, Q5:B → fix C=4 → spread out FIXES["021401_second"] = { 0: {"answer": 0, "options": ["Ben's plan to prepare for next week's trip", "Skylar's plan to fix the backpack", "Lucy's plan to read in the park"], "explanation": "Ben说'I had to plan my trip for next week.',他的计划是为下周旅行做准备。选项A为正确答案。"}, 1: {"answer": 0, "options": ["Repair a broken seat", "Buy a new backpack for school", "Plan a weekend visit"], "explanation": "Lucy说'I should repair this seat.',她需要修椅子。选项A为正确答案。"}, 3: {"answer": 1, "options": ["He can't read the newspaper without glasses", "He forgot his backpack with the map", "His newspaper got wet on the seat"], "explanation": "Ben说'My plan failed because I forgot my backpack with the map.',他忘了带装地图的背包。选项B为正确答案。"}, } # 021501 first: Q1:B, Q2:B, Q3:B, Q4:A, Q5:A → fix B=3 → move Q2 to C FIXES["021501_first"] = { 1: {"answer": 2, "options": ["He wants to invite his cousin", "He feels sorry about the party", "He can't invite any more because the house is full"], "explanation": "Ben说'I'm sorry, but we can't invite any more guests. The house is full.',房子满了无法邀请更多客人。选项C为正确答案。"}, 2: {"answer": 0, "options": ["Smith's guest changed from serious to friendly", "Lucy's guest told clever stories", "Ben's guest was serious and quiet"], "explanation": "问题问的是谁的客人从严肃变友好,对话中Smith说'The visitor seemed very serious at first, but later he was very friendly.',是Smith的客人性格变化,选项A为正确答案。"}, } # 021501 second: Q1:A, Q2:B, Q3:B, Q4:B, Q5:A → fix B=3 → move Q3 to A, Q4 to C FIXES["021501_second"] = { 2: {"answer": 0, "options": ["Write a story because he loves reading", "Work with new technology", "Read instructions more carefully"], "explanation": "Ben说'I want to write a story. The reason is I love reading.',他计划写故事。选项A为正确答案。"}, 3: {"answer": 2, "options": ["Always read the instruction before starting", "Be careful with new technology", "If you copy someone's work, you won't learn"], "explanation": "Lucy说'If you copy someone's work, you won't learn.',抄袭不能帮助学习。选项C为正确答案。"}, } # 021701 first: Q1:A, Q2:B, Q3:B, Q4:A, Q5:B → fix B=3 → move Q3 to C FIXES["021701_first"] = { 2: {"answer": 2, "options": ["A clever machine that can draw", "A basketball game on TV", "A great invention from many years ago"], "explanation": "Ben说'I read about a great invention in a book. Someone made it many years ago.',他读到一项古老发明。选项C为正确答案。"}, } # 021801 first: Q1:A, Q2:A, Q3:B, Q4:B, Q5:B → fix B=3 → move Q5 to C FIXES["021801_first"] = { 4: {"answer": 2, "options": ["He lost his keys in the kitchen", "He was late for a film at the theatre", "His watch stopped because the battery was old"], "explanation": "Ben说'My watch stopped because the battery was old. I bought a new one after lunch.',他的手表没电了。选项C为正确答案。"}, } # 022101 first: Q1:A, Q2:A, Q3:B, Q4:B, Q5:A → fix A=3 → move Q2 to C FIXES["022101_first"] = { 1: {"answer": 2, "options": ["At the port, from boats", "Near the factory", "At home, a ball hit the window"], "explanation": "Lucy说'I heard a loud noise when a ball hit the window.',球撞到窗户发出了噪音,这发生在家里。选项C为正确答案。"}, } # 032501 first: Q1:A, Q2:A, Q3:B, Q4:A, Q5:B → fix A=3 → move Q1 to C FIXES["032501_first"] = { 0: {"answer": 2, "options": ["Skylar's job online", "Lucy's job at a big company", "Ben's job as a journalist with a partner"], "explanation": "Ben说'My partner and I write stories for a newspaper.',他和搭档一起写新闻。选项C为正确答案。"}, } # Summary of all fixes to print for qsid, fixes in FIXES.items(): print(f"QSID: {qsid}") for idx, fix in fixes.items(): print(f" Q{idx}: answer→{fix['answer']}, options={fix['options']}")