#!/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']}")
