examples: add rosetta code Median
authorAlexandre Terrasa <alexandre@moz-code.org>
Wed, 10 Jun 2015 17:06:41 +0000 (13:06 -0400)
committerAlexandre Terrasa <alexandre@moz-code.org>
Wed, 10 Jun 2015 17:06:41 +0000 (13:06 -0400)
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

examples/rosettacode/median.nit [new file with mode: 0644]
tests/sav/median.res [new file with mode: 0644]

diff --git a/examples/rosettacode/median.nit b/examples/rosettacode/median.nit
new file mode 100644 (file)
index 0000000..fd21ad7
--- /dev/null
@@ -0,0 +1,22 @@
+#!/usr/bin/env nit
+#
+# This file is part of NIT ( http://www.nitlanguage.org ).
+# This program is public domain
+
+# Task: Median
+# SEE: <http://rosettacode.org/wiki/Averages/Median>
+module median
+
+# Computes the median or the `array` values.
+fun median(array: Array[Float]): nullable Float do
+       if array.is_empty then return null
+       default_comparator.sort(array)
+       var mid = (array.length / 2).to_i
+       var rem = ((array.length - 1) / 2).to_i
+       return (array[mid] + array[rem]).to_f / 2.0
+end
+
+print median(new Array[Float]) or else "null"
+print median([5.0, 3.0, 4.0]) or else "null"
+print median([5.0, 4.0, 2.0, 3.0]) or else "null"
+print median([3.0, 4.0, 1.0, -8.4, 7.2, 4.0, 1.0, 1.2]) or else "null"
diff --git a/tests/sav/median.res b/tests/sav/median.res
new file mode 100644 (file)
index 0000000..c9c70e0
--- /dev/null
@@ -0,0 +1,4 @@
+null
+4.0
+3.5
+2.1