fix: autoresearch proposal uses string replace instead of regex
This commit is contained in:
@@ -1,11 +1,10 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Simple proposal: makes one targeted balance change to themes.py based on trial number.
|
||||
Cycles through known adjustments that improve balance.
|
||||
Proposal: makes one targeted balance change to themes.py per trial.
|
||||
Uses simple string replacement — no regex.
|
||||
"""
|
||||
import os
|
||||
import sys
|
||||
import re
|
||||
|
||||
repo = os.environ.get("AR_REPO_PATH", "/home/alex/pony")
|
||||
trial = int(os.environ.get("AR_TRIAL", "1"))
|
||||
@@ -14,39 +13,45 @@ themes_path = os.path.join(repo, "web/app/data/themes.py")
|
||||
with open(themes_path, "r") as f:
|
||||
content = f.read()
|
||||
|
||||
# Define a set of potential improvements — each trial tries a different one
|
||||
# Each trial: find an old_string and replace with new_string
|
||||
# Cycle through improvements based on trial number
|
||||
improvements = [
|
||||
# Trial 1: Rainbow Dash scene 4 (krop/normal) -> krop/svaert to add challenge
|
||||
('Rainbow Dash har fødselsdag', 'Gør Pinkies festkanon klar', 'krop', 'normal', 'svaert'),
|
||||
# Trial 2: Lunas forsvundne stjerner — make scene 1 harder
|
||||
('Lunas forsvundne stjerner', 'Find Lunas stjerner', 'sind', 'let', 'normal'),
|
||||
# Trial 3: Twilights forsvundne bog scene 2 (krop/normal) -> krop/svaert
|
||||
('Twilights forsvundne bog', 'Kom forbi skyen af dansende ord', 'krop', 'normal', 'svaert'),
|
||||
# Trial 4: Angel scene 5 (charme/svaert) -> already hard, try body scene 2
|
||||
('Angel er løbet væk', 'Spørg alle ponyer i Ponyville', 'sind', 'normal', 'svaert'),
|
||||
# Trial 5: Discord scene 4 (sind/normal) -> svaert
|
||||
('Discord laver sjov', 'Fang Discords sidste kaosgnist', 'sind', 'normal', 'svaert'),
|
||||
# Trial 1: Rainbow Dash scene 4 — make harder
|
||||
(
|
||||
'"aktion": "Gør Pinkies festkanon klar",\n "stat": "krop", "svaer": "normal",',
|
||||
'"aktion": "Gør Pinkies festkanon klar",\n "stat": "krop", "svaer": "svaert",',
|
||||
),
|
||||
# Trial 2: Twilight scene 2 — make harder
|
||||
(
|
||||
'"aktion": "Kom forbi skyen af dansende ord",\n "stat": "krop", "svaer": "normal",',
|
||||
'"aktion": "Kom forbi skyen af dansende ord",\n "stat": "krop", "svaer": "svaert",',
|
||||
),
|
||||
# Trial 3: Discord scene 4 — make harder
|
||||
(
|
||||
'"aktion": "Fang Discords sidste kaosgnist",\n "stat": "sind", "svaer": "normal",',
|
||||
'"aktion": "Fang Discords sidste kaosgnist",\n "stat": "sind", "svaer": "svaert",',
|
||||
),
|
||||
# Trial 4: Angel scene 2 — make harder
|
||||
(
|
||||
'"aktion": "Spørg alle ponyer i Ponyville",\n "stat": "sind", "svaer": "normal",',
|
||||
'"aktion": "Spørg alle ponyer i Ponyville",\n "stat": "sind", "svaer": "svaert",',
|
||||
),
|
||||
# Trial 5: Rarity scene 2 — make harder
|
||||
(
|
||||
'"aktion": "Spørg i Ponyville",\n "stat": "krop", "svaer": "normal",',
|
||||
'"aktion": "Spørg i Ponyville",\n "stat": "krop", "svaer": "svaert",',
|
||||
),
|
||||
]
|
||||
|
||||
idx = (trial - 1) % len(improvements)
|
||||
tema_title, action, stat, old_diff, new_diff = improvements[idx]
|
||||
old_s, new_s = improvements[idx]
|
||||
|
||||
# Find and replace the specific scene
|
||||
# Match: "aktion": "Gør Pinkies festkanon klar",\n "stat": "krop", "svaer": "normal",
|
||||
pattern = re.escape(f'"{action}"') + r',\s*("stat":\s*"' + re.escape(stat) + r'",\s*"svaer":\s*")' + re.escape(old_diff) + r'('
|
||||
replacement = r'\1' + new_diff + r'\2'
|
||||
|
||||
if old_diff != new_diff:
|
||||
new_content = re.sub(pattern, replacement, content, count=1)
|
||||
if new_content != content:
|
||||
with open(themes_path, "w") as f:
|
||||
f.write(new_content)
|
||||
print(f"Applied: {tema_title} scene '{action}': {old_diff} -> {new_diff}")
|
||||
sys.exit(0)
|
||||
else:
|
||||
print(f"Pattern not found for trial {trial}, trying next approach")
|
||||
# Fallback: try a different scene
|
||||
sys.exit(1)
|
||||
if old_s in content:
|
||||
new_content = content.replace(old_s, new_s, 1)
|
||||
with open(themes_path, "w") as f:
|
||||
f.write(new_content)
|
||||
print(f"Trial {trial}: applied change (old->new)")
|
||||
sys.exit(0)
|
||||
else:
|
||||
print(f"No change needed for trial {trial}")
|
||||
print(f"Trial {trial}: pattern not found in themes.py, skipping")
|
||||
sys.exit(1)
|
||||
Reference in New Issue
Block a user