如何在 Ruby 中打印方程式



我有一个问题。

1.0X + 1.0Y + -7.0 = 0

如何更好地打印方程式?

例如,我想打印-7.0而不是+- 7.0;或者在系数为零的情况下。

谢谢

打印完全

控制格式的公式

a = b = 1
c = -7
puts "%0.1fX + %0.1fY %s %0.1f = %d"%[ a, b, c < 0 ? '-' : '+', c.abs, 0 ]

输出:

1.0X + 1.0Y - 7.0 = 0

文档:Ruby 的 % 字符串运算符/sprintf

通过一些替换,你可以得到一个更干净的方程:

equation = "1.0X + 1.0Y - -0.0Z + -7.0 = 0"
new_equation = equation.gsub('+ -', '- ')
                       .gsub('- -', '+ ')
                       .gsub(/^s*+/, '')             # Remove leading +
                       .gsub(/(?<=d).0+(?=D)/, '')  # Remove trailing zeroes
                       .gsub(/b1(?=[a-z])/i, '')      # Remove 1 in 1X
                       .gsub(/[+-]? ?0[a-z] ?/i, '')   # Remove 0Z
p new_equation
# "X + Y - 7 = 0"

顺便说一下,尽管我非常喜欢Ruby,但我必须说Sympy是一个很棒的项目。仅此库就值得学习基本的 Python 语法。

最新更新