diff --git a/src/main/kotlin/PluginMain.kt b/src/main/kotlin/PluginMain.kt index 986e51f..5ca33b3 100644 --- a/src/main/kotlin/PluginMain.kt +++ b/src/main/kotlin/PluginMain.kt @@ -30,13 +30,14 @@ object PluginMain : KotlinPlugin( "请用以上四组数字组合成结果为24的算式,以“答”开头验证" } startsWith("答") quoteReply { - val game = games[this.sender.id] + val game = games[sender.id] if (game == null) { "你还没有抽数字哦,说“24点”来开始游戏吧" } else { try { val result = game.evaluate(message.contentToString().removePrefix("答").trim()) if (result == 24.0) { + games.remove(sender.id) "恭喜你,答对了!" } else { "答错了,计算结果为 $result" diff --git a/src/main/kotlin/Point24.kt b/src/main/kotlin/Point24.kt index 5437832..8cbe262 100644 --- a/src/main/kotlin/Point24.kt +++ b/src/main/kotlin/Point24.kt @@ -21,8 +21,10 @@ class Point24 { ) fun evaluate(expression: String): Double { + val expr = expression.replace('(', '(').replace(')', ')') + val tokens = ShuntingYard.convertToRPN( - expression, + expr, null, mapOf(), null, @@ -47,7 +49,7 @@ class Point24 { if (nums.isNotEmpty()) throw IllegalArgumentException("必须使用所有数值") - return ExpressionBuilder(expression) + return ExpressionBuilder(expr) .implicitMultiplication(false) .build() .evaluate()