因此我必须使用clisp在给定数字序列的情况下创建2个均等方程
IE用户输入2 2 2 2:
2 + 2 = 2 + 2;是有效的
2 - 2 = 2 - 2;也是有效的
2 = 2 + 2 - 2;有效
2 + 2 + 2 = 2;无效
用户输入6 2 2 2:
6 = 2 + 2 + 2;有效
6 = 2 * 2 + 2;有效
6 + 2 = 2 * 2;无效
*,/,+和 - 的操作用于基本数学,=表示左手侧=右手侧。
我的问题在于我缺乏任何真正的lisp训练以及从哪里开始。我想我必须使用宏,但我不确定如何使用宏或如何使用宏。
我知道最初我必须定义一个函数,例如
(defun findequation(a b c d))
但是从那里我失去了
答案 0 :(得分:0)
第一步:创建相关符号的所有组合,并限制恰好有一个=
。
示例输入:(2 2 2 2)
,(+ - * / =)
示例输出:(2 + 2 + 2 = 2)
,(2 + 2 - 2 = 2)
,(2 - 2 - 2 = 2)
,...
第二步:使用shunting-yard algorithm将交替数字和符号的中缀列表转换为树。
示例输入:(2 + 2 = 2 - 2)
示例输出:(= (+ 2 2) (- 2 2))
然后你可以评估它是否真实。