У меня есть, скажем, переменная X, переменная Y и переменная Z.
If Y = 1 then Z = 0.
Все приведенные ниже примеры относятся к случаю, когда Y строго больше 1.
* If X = 1 and Y >= 2, then Z = 1
* If X = 2 and Y >= 4, then Z = 2
(If X = 2 and Y < 4 , then Z = 1)
* If X = 3 and Y >= 6, then Z = 3
(If X = 3 and Y < 6 but >= 4, then Z = 2)
(If X = 3 and Y < 4 but >= 2, then Z = 1)
* If X = 4 and Y >= 8, then Z = 4
(If X = 4 and Y < 8 but >= 6, then Z = 3)
(If X = 4 and Y < 6 but >= 4, then Z = 2)
(If X = 4 and Y < 4 but >= 2, then Z = 1)
etc etc ...
Я пытаюсь создать формулу для создания этой переменной Z в зависимости от приведенной выше информации.
Я пробовал делать следующее:
$Z = $X > $Y ? $Y : floor($X / $Y);
Сначала я подумал, что это делает то, что я хочу, но, видимо, нет. Есть идеи, что я делаю не так и как решить эту проблему?
кажется, что Z не зависит от X и равно полу (Y / 2)
@ splash58 не совсем, так как If X = 3 and Y < 4 по вашей формуле результат будет 2, но он должен быть 1.
3/2 = 1,5 и пол -> 1
Похоже, X - это верхняя граница, которую вы можете протестировать с min().
@ splash58 он не работает в случае If X = 1 and Y = 4, он не дает мне требуемого 1 :) Тот же If X = 2 and Y = 6, он не дает мне 2 ... и т. д.
@gumakettell так, результат должен быть меньше или равен X?
@ splash58 что ты имеешь в виду? Я написал в своем комментарии, каким должен быть результат.
мин (X, этаж (Y / 2))?
@ splash58 да, это ответ, который я получил бы, если бы вы его проверили. Так ты с этим согласен?
Вы не объяснили логику расчета, только показали какой-то пример. С ними работает, но насчет других данных не уверен






Сначала нам нужно проанализировать условия и то, что делает каждая переменная.
X, по-видимому, обеспечивает верхнюю границу для Z, поэтому Z = min(X, ???)Y >= 2, при этом Z фиксируется как 0, если Y = 1floor(Y / 2) = Z в указанном выше диапазонеТаким образом, Y и X должны быть не менее 1, а диапазон Z - [0, X].
Собираем все вместе:
if Y < 1 or X < 1:
some error ???
elif Y == 1
Z = 0
else
Z = min(X, floor(Y / 2))
Само по себе это не проблема PHP. Если вы можете математически сформулировать «алгоритм», перевод на PHP будет несложным. Попробуйте сначала найти математическую формулу.