OCamlで、5つの引数を取り、中央値を返す中央値関数をどのように記述しますか。たとえば、4med5 2 5 7 4 3
を返します。
ifおよびelseステートメントを使用してmed3関数(3つの引数の中央値を返す)を作成することができましたが、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つの引数の中央値を返すことができますが、最小引数と最大引数を破棄するにはどうすればよいですか!?!?!?!?
どんな助けでも大歓迎です:)