2019年5月16日木曜日

COLOCON 2018 Final - B 異世界数式

COLOCON 2018 Final - B 異世界数式

構文解析の問題をやってみたくなったので。Spaghetti Sourceを見てLL(1)パーサを書いた。+(1,-(002,3)) \mapsto (+ "1" (- "002" "3"))のようにS式になおせば、あとは中置記法で出力するだけになる。

しかし、うっかりスタックサイズを増やし忘れたため、TLEを出した。control-stack-exhaustedでREになる場合はすぐわかるけどTLEになるパターンもたまにあって、後者の場合、それとわかりにくいのでけっこう困る。