Minimum numbers of three lists: Difference between revisions

→‎{{header|JavaScript}}: Added a JavaScript version.
(→‎{{header|JavaScript}}: Added a JavaScript version.)
Line 187:
<$> transpose
[numbers1, numbers2, numbers3]</lang>
{{Out}}
<pre>[5,22,12,21,38]</pre>
 
=={{header|JavaScript}}==
<lang javascript>(() => {
"use strict";
 
const main = () => {
const
numbers1 = [5, 45, 23, 21, 67],
numbers2 = [43, 22, 78, 46, 38],
numbers3 = [9, 98, 12, 98, 53];
 
return transpose([
numbers1, numbers2, numbers3
]).map(minimum);
};
 
 
// --------------------- GENERIC ---------------------
 
// minimum :: Ord a => [a] -> a
const minimum = xs =>
// The least value of xs.
0 < xs.length ? (
xs.slice(1)
.reduce((a, x) => x < a ? (
x
) : a,
xs[0]
)
) : null;
 
 
// transpose :: [[a]] -> [[a]]
const transpose = rows =>
// The columns of the input transposed
// into new rows.
// Simpler version of transpose, assuming input
// rows of even length.
0 < rows.length ? rows[0].map(
(_, i) => rows.flatMap(
v => v[i]
)
) : [];
 
// MAIN ---
return main();
})();</lang>
{{Out}}
<pre>[5,22,12,21,38]</pre>
9,655

edits