たいへんだ

自動でAI同士を闘わせることでいろいろ問題点が見つかる。同時に死亡条件を満たすケースをチェックし忘れていた。

[Charm][MoveCard][CopyPast (Y)]でCopyPastが消えてからMoveCardで移動がおきて、そのあと「現在実行中のカードの位置でPCを再設定」ってやっているせいでカードが見つからないエラー。

{'draw': 29, "ValueError('list.remove(x): x not in list',)": 35, "RuntimeError('Too Long Play',)": 120, "ValueError('list.index(x): x not in list',)": 18, "IndexError('list index out of range',)": 57, 'Computer': 370, 'You': 371}

{'draw': 33, "ValueError('list.remove(x): x not in list',)": 34, "RuntimeError('Too Long Play',)": 125, "ValueError('list.index(x): x not in list',)": 17, "IndexError('list index out of range',)": 35, 'Computer': 380, 'You': 376}

{'draw': 35, "ValueError('list.remove(x): x not in list',)": 34, "RuntimeError('Too Long Play',)": 128, "ValueError('list.index(x): x not in list',)": 17, "IndexError('list index out of range',)": 21, 'Computer': 382, 'You': 383}

徐々に解決していってはいるが。。

ふむ。

結局のところ

[MIMIC][BOMB][x]でMIMICが削除された後xを実行するルールは許容できるか?つまり[BOMB & x]というアトミックな命令はすでにフェッチ済という解釈。[GOTO & x]でxが発動するならこっちも発動する方が例外が少ないかと。

この設計判断が間違っていたわけだ。[MIMIC][BOMB][FLOAT]みたいな時に、すでに動かすべきカードが消滅している。カード消滅は例外を投げるべきだったか。