第20期来啦!
如各位所见,我给自己挖了两个需要填上的大坑……
这个题虽然是一个表达式求值,但考虑到以后可能出现的冰系魔法2b啥的(暗示),说明这题的目的不是简单的表达式求值哦。大家不一定非要打一个表达式求值的板子出来。
第20期 冰系魔法2a
传说在某个异世界里是存在元素的,也存在元素魔法。那里有一所魔法学院。与其他魔法学院不同,这所学院哪个系的魔法也不教,教的全是魔法背后玄而又玄的深奥知识。但是,来这所学院求学的人却是络绎不绝,因为从这所学院里学到大成之人已经可以自创一系魔法,早已超脱用某个系魔法施法的境界。不过,我们地球人想要一下理解异世界的艰深魔法理论还是很困难的,所以我们当然不会直接像大成之人那样自创魔法。我们从最简单的开始。
在那个异世界有一个魔法小工具,叫做骰娘魔法骰子。向这个骰子输入一个掷骰表达式(别问怎么输入,问就是魔法),这个骰子就能按照表达式的要求自动掷骰子,然后输出(别问怎么输出,问就是魔法)结果。这个小工具在异世界非常流行,几乎家家户户都有。
异世界魔法骰子比地球的骰娘要强大很多。地球的骰娘最多只支持形如rAdB+C的表达式,表示投掷A个B面的均匀骰子,结果取出目的总和再加上C。异世界的骰娘不光支持掷骰,还支持加减乘除四则运算。并且,表达式还能嵌套,允许加括号。比如说:(r3*5+7d2*(r1d6)-1)/2。这个表达式的意思是:先掷一枚6面骰子,出目乘2后减去1,作为骰子的面数(记为A),之后投掷15+7=22个这样的骰子(注意每个骰子都有A个面,而非每个骰子的面数都不相同),出目总和除以2,舍弃小数部分后作为结果输出。
我们规定,括号的运算优先级最高(废话),其次是乘除法,再次是加减法,最后是掷骰子运算。
MrK-018手头已经有了一些用来进行四则运算、模拟掷骰子和输出用的魔法。给定一个掷骰子表达式,他想知道怎样按顺序地调用这些魔法,才能得到表达式要求的输出。
输入
一个掷骰表达式。保证涉及到的数字只有十进制非负整数,不涉及小数。整数可能以以下几种形式出现:
一般形式,如114514
科学计数法,如1.14e5,1.14E5,3E8等等。
输出
这个表达式对应的魔法调用序列。对于不符合文法的表达式,输出一行Syntax error!。输出的数字格式要与
样例输入1
(r3*5+7d2*(r1d6)-1)/2
样例输出1
输出不唯一,此处展示一种可行的输出。
1: rd 1 6
2: mul 2 [1]
3: sub [2] 1
4: mul 3 5
5: add [4] 7
6: rd [5] [3]
7: div [6] 2
8: out [7]
样例输入2
4e50
样例输出2
1: out 4e50
样例输入3
4d
样例输出3
Syntax error!