tasks a-s
This commit is contained in:
parent
47bf37c096
commit
b83f433714
12433 changed files with 156208 additions and 123 deletions
18
Task/Permutations/CoffeeScript/permutations-1.coffeescript
Normal file
18
Task/Permutations/CoffeeScript/permutations-1.coffeescript
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
# Returns a copy of an array with the element at a specific position
|
||||
# removed from it.
|
||||
arrayExcept = (arr, idx) ->
|
||||
res = arr[0..]
|
||||
res.splice idx, 1
|
||||
res
|
||||
|
||||
# The actual function which returns the permutations of an array-like
|
||||
# object (or a proper array).
|
||||
permute = (arr) ->
|
||||
arr = Array::slice.call arr, 0
|
||||
return [[]] if arr.length == 0
|
||||
|
||||
permutations = (for value,idx in arr
|
||||
[value].concat perm for perm in permute arrayExcept arr, idx)
|
||||
|
||||
# Flatten the array before returning it.
|
||||
[].concat permutations...
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
coffee> console.log (permute "123").join "\n"
|
||||
1,2,3
|
||||
1,3,2
|
||||
2,1,3
|
||||
2,3,1
|
||||
3,1,2
|
||||
3,2,1
|
||||
Loading…
Add table
Add a link
Reference in a new issue