Как бы я написал в OCaml медианную функцию, которая принимает 5 аргументов и возвращает медиану. Например, med5 2 5 7 4 3
вернет 4.
Мне удалось написать функцию med3 (возвращает медиану 3 аргументов), используя операторы if и else, но это было бы смехотворно сложно, если бы я попытался использовать ту же технику для 5 аргументов :(
let med3 a b c =
if ((b<=a && c>=a) || (c<=a && b>=a)) then a
else if ((a<=b && c>=b) || (c<=b && a>=b)) then b else c;;
Для функции med5 я хотел бы иметь возможность использовать функции min и max (встроенные в OCaml), чтобы отбрасывать самые высокие и самые низкие значения из набора из 5 аргументов. Затем я мог бы использовать функцию med3, которую я уже написал, чтобы вернуть медиану оставшихся 3 аргументов, но как мне отбросить минимальный и максимальный аргументы!?!?!?!?
Любая помощь приветствуется :)
med5 2 5 7 4 3
это4
, а не3
- person Virgile   schedule 10.10.2012