Sorting algorithms/Permutation sort: Difference between revisions

Added Elixir
m (→‎{{header|Sidef}}: code simplifications)
(Added Elixir)
Line 41:
return permutations([],array);
}</lang>
 
=={{header|AutoHotkey}}==
ahk forum: [http://www.autohotkey.com/forum/post-276680.html#276680 discussion]
Line 493 ⟶ 494:
→ (0 1 2 3 4 5)
</lang>
 
=={{header|Elixir}}==
<lang elixir>defmodule Sort do
def permutation_sort([]), do: []
def permutation_sort(list) do
Enum.find(permutation(list), fn [h|t] -> in_order?(t, h) end)
end
defp permutation([]), do: [[]]
defp permutation(list) do
for x <- list, y <- permutation(list -- [x]), do: [x|y]
end
defp in_order?([], _), do: true
defp in_order?([h|_], pre) when h<pre, do: false
defp in_order?([h|t], _), do: in_order?(t, h)
end
 
IO.inspect list = for _ <- 1..9, do: :rand.uniform(20)
IO.inspect Sort.permutation_sort(list)</lang>
 
{{out}}
<pre>
[18, 2, 19, 10, 17, 10, 14, 8, 3]
[2, 3, 8, 10, 10, 14, 17, 18, 19]
</pre>
 
=={{header|Go}}==
Line 907 ⟶ 934:
 
1 2 3 4 5 6</lang>
 
=={{header|MAXScript}}==
<lang MAXScript>fn inOrder arr =
Line 1,173 ⟶ 1,201:
permutation([],[]).
permutation([X|XS],YS) :- permutation(XS,ZS), select(X,YS,ZS).</lang>
 
=={{header|PureBasic}}==
<lang PureBasic>Macro reverse(firstIndex, lastIndex)
Anonymous user