From ad5c9866f7fe5e395bf93e0e985fb4448e61d231 Mon Sep 17 00:00:00 2001 From: jie65535 Date: Tue, 14 Jun 2022 12:05:31 +0800 Subject: [PATCH] =?UTF-8?q?fix=20'=EF=BC=88'=20and=20'=EF=BC=89'=20error?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/PluginMain.kt | 3 ++- src/main/kotlin/Point24.kt | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) 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()