我有 7 个杯子,里面有一些水。我需要对这些杯子进行编程以获得不同量的水。完成此操作后,我需要测量水量最多的杯子,然后取出一些量(比如 2 个单位的水)。
c实现:
float c1=2.0, c2= 2.6, c3 = 2.8, c4=4.4 , c5 = 2.4, c6 = 2.1, c7 = 5.8;
if((c1 > c2) && (c1 > c3) && (c1 > c4) && (c1 > c5) && (c1 > c6) && (c1 > c7)); c1=c1-2;
if((c2 > c1) && (c2 > c3) && (c2 > c4) && (c2 > c5) && (c2 > c6) && (c2 > c7)); c2=c2-2;
if((c3 > c2) && (c3 > c1) && (c3 > c4) && (c3 > c5) && (c3 > c6) && (c3 > c7)); c3=c3-2;
if((c4 > c2) && (c4 > c3) && (c4 > c1) && (c4 > c5) && (c4 > c6) && (c4 > c7)); c4=c4-2;
if((c5 > c2) && (c5 > c3) && (c5 > c4) && (c5 > c1) && (c5 > c6) && (c5 > c7)); c5=c5-2;
if((c6 > c2) && (c6 > c3) && (c6 > c4) && (c6 > c5) && (c6 > c1) && (c6 > c7)); c6=c6-2;
if((c7 > c2) && (c7 > c3) && (c7 > c4) && (c7 > c5) && (c7 > c6) && (c7 > c1)); c7=c7-2;
这将给出一个答案c7 = 3.8
我试图在 z3 中实现这一点,并将值分配给 c1....c7
ite( (and((> c1 c2) (> c1 c3) (> c1 c4) (> c1 c5) (> c1 c6) (> c1 c7))) (= c1_1 (- c1 2) (= c1_1 c1))
.
.
.repeated till c7_1
当我得到模型值时,它应该将 c7_1 设为 3.8
是否可以在 z3 中定义它?当我在 if 条件(在 ite 中)中使用不同条件的 and 时,它给了我一个错误。不能这样定义吗?有什么办法吗?
提前致谢
[问题描述][1]
我正在尝试使用 Z3 工具,很容易得到他的第一部分但是对于第二部分来说有点困难。