Permutations: Difference between revisions

Content added Content deleted
(→‎{{header|Perl 6}}: modernize a bit)
Line 2,107: Line 2,107:
// [a] -> [[a]]
// [a] -> [[a]]
function permutations(xs) {
function permutations(xs) {
return xs.length ? (
return xs.length ? (chain(xs, function (x) {
chain( xs, function (x) {
return chain(permutations(deleted(x, xs)), function (ys) {
return chain( permutations(deleted(x, xs)), function (ys) {
return ([[x].concat(ys)]);
})

return ( [[x].concat(ys)] );
})) : [[]]

})})) : [[]]
}
}


Line 2,123: Line 2,121:
// drops first instance found
// drops first instance found
function deleted(x, xs) {
function deleted(x, xs) {
return xs.length ? (
return xs.length ? x === xs[0] ? xs.slice(1) : [xs[0]]
x === xs[0] ? xs.slice(1) : [xs[0]].concat(
.concat(deleted(x, xs.slice(1))) : [];
deleted(x, xs.slice(1))
)
) : [];
}
}


Line 2,136: Line 2,131:
{{out}}
{{out}}


<lang JavaScript>[["Aardvarks", "eat", "ants"], ["Aardvarks", "ants", "eat"], ["eat", "Aardvarks", "ants"], ["eat", "ants", "Aardvarks"], ["ants", "Aardvarks", "eat"], ["ants", "eat", "Aardvarks"]]</lang>
<lang JavaScript>[["Aardvarks", "eat", "ants"], ["Aardvarks", "ants", "eat"],
["eat", "Aardvarks", "ants"], ["eat", "ants", "Aardvarks"],
["ants", "Aardvarks", "eat"], ["ants", "eat", "Aardvarks"]]</lang>


=={{header|jq}}==
=={{header|jq}}==