У меня есть 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 (в ите), это дает мне ошибку. Разве это не может быть определено так? Есть ли что-нибудь в этом роде?
Заранее спасибо
[описание проблемы] [1]
Я экспериментирую с инструментом Z3, мне было легко получить первую частьОднако для второй части это немного сложно.