gpt4 book ai didi

string - 将字符串公式解析为整数结果

转载 作者:行者123 更新时间:2023-12-03 19:44:04 29 4
gpt4 key购买 nike

我正在做一些解析工作,太复杂而无法深入了解,但我需要做一件简单的事情(至少是简单的概念,也许不是简单的答案)。我可能在字符串中有一个公式,例如下面的示例。我需要一个函数来获取格式松散的公式字符串,将其解析出来并计算结果。

样本:
(10 / 2)+(10/30)5+(10/30)5+38
或者:
(12.5 - (0.5 * 5)) / 2(12.5 - 2.5) / 210 / 25
规则:

  • 空格将被忽略
  • PEMDAS 方法必须完全适用
  • 结果应始终为四舍五入的整数
  • 将不存在任何变量,已转换为数字
  • 十进制数字可能是输入的一部分

  • 我已经使用的现有解析只获取了这些公式字符串之一 - 但从那里,我不知道如何执行实际计算。我正在做的是做一个小线分隔的脚本来绘制到 Canvas 上,这里有一些示例脚本:
    Var W 50
    Var H 50
    Pen Style Clear
    Pen Color $000000
    Pen Width 3
    Brush Style Solid
    Brush Color {FORM_COLOR}
    Rect 0 0 {WIDTH} {HEIGHT}
    Brush Color $501010
    Ellipse @W @H 450 450
    Brush Color $602020
    Ellipse 100 100 400 400
    Brush Color $703030
    Ellipse 150 150 350 350
    Brush Color $804040
    Ellipse 200 200 300 300
    EllipseG 200 200 300 300 6 2
    Pen Style Solid
    Pen Width 2
    Pen Color {FONT_COLOR}
    MoveTo 0 0
    LineTo 500 500
    MoveTo 0 500
    LineTo 500 0

    所有这些都已经奏效了,但现在我想说例如......
    Var W
    Var H
    Set W 50
    Set H 50
    Brush Color $602020
    Ellipse(@W, @H, 500 - @W, 500 - @H
    Set W 100
    Set H 100
    Brush Color $703030
    Ellipse(@W, @H, 500 - @W, 500 - @H
    Set W 150
    Set H 150
    Brush Color $804040
    Ellipse(@W, @H, 500 - @W, 500 - @H

    所以 500 - @W我已经将其转换为 500 - 50但现在我需要发送字符串 500 - 50进入这个函数得到结果 450 .

    编辑:已解决

    我正在使用 parser10正如推荐的那样,它非常适合我需要做的事情。这是我的脚本代码的示例片段:
    Var S 4
    Var D @S
    Var L 0
    Var T 0
    Var R {WIDTH}
    Var B {HEIGHT}
    Pen Style Clear
    Pen Color $00000000
    Pen Width 3
    Brush Style Solid
    Brush Color {FORM_COLOR}
    Rect 0 0 {WIDTH} {HEIGHT}

    Set D @D+@S
    Brush Color $00400000
    Ellipse @L+@D @T+@D @R-(@D*2) @B-(@D*2)
    Set D @D+@S
    Brush Color $00501010
    Ellipse @L+@D @T+@D @R-(@D*2) @B-(@D*2)
    Set D @D+@S
    Brush Color $00602020
    Ellipse @L+@D @T+@D @R-(@D*2) @B-(@D*2)
    Set D @D+@S
    Brush Color $00703030
    Ellipse @L+@D @T+@D @R-(@D*2) @B-(@D*2)
    Set D @D+@S
    Brush Color $00804040
    Ellipse @L+@D @T+@D @R-(@D*2) @B-(@D*2)
    Set D @D+@S
    Brush Color $00905050
    Ellipse @L+@D @T+@D @R-(@D*2) @B-(@D*2)
    Set D @D+@S
    Brush Color $00FB6060
    Ellipse @L+@D @T+@D @R-(@D*2) @B-(@D*2)

    任何以@ 开头的都是变量,我使用 StringReplace()根据 Var 中声明的内容转换所有这些部分。

    最佳答案

    Parser10最初由 Renate Schaaf 为 Delphi 1 编写,后来由 Alin Flaider 和 Stefan Hoffmeister 升级到 Delphi2 和 3,是一个相当简单的数学解析器。它将完成简单表达式的工作,并且可以作为更复杂工作的样板。

    它不是为速度而构建的。

    更新 :

    Hallvard Vassbotn 更新了 Parser10 并添加了一些文档。从 here 加载它.

    关于string - 将字符串公式解析为整数结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8228077/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com