Anonymous user
Permutations: Difference between revisions
Added sections. Changed indentation of the Go translation. Replaced procedure variable with a simple procedure. Used "rotateLeft" from module "algorithm".
Drkameleon (talk | contribs) |
(Added sections. Changed indentation of the Go translation. Replaced procedure variable with a simple procedure. Used "rotateLeft" from module "algorithm".) |
||
Line 5,831:
=={{header|Nim}}==
===Using the standard library===
<lang nim>import algorithm
var v = [1, 2, 3] # List has to start sorted
Line 5,848:
</pre>
===Translation of C===
{{trans|C}}
<lang nim># iterative Boothroyd method
Line 5,885 ⟶ 5,886:
@[3, 2, 1]</pre>
===Translation of Go===
{{trans|Go}}
<lang nim>#
# http://rosettacode.org/wiki/Permutations#Go
# implementing a recursive https://en.wikipedia.org/wiki/Steinhaus–Johnson–Trotter_algorithm
import algorithm
var s = @s▼
if s.len == 0: ▼
emit(s)▼
return▼
proc perm(s: openArray[int];
rc = proc(np: int) = ▼
if np ==
rc(np1) # recurs prior swaps▼
for i in countDown(pp, 1):▼
swap s[i], s[i-1]▼
rc(np1) # recurs swap ▼
rc(s.len)▼
s.rotateLeft(0..pp, 1)
var se = @[0, 1, 2, 3] #, 4, 5, 6, 7, 8, 9, 10]
perm(se, proc(
=={{header|OCaml}}==
|