Permutations: Difference between revisions
m
→{{header|R}}
(→{{header|Haskell}}: Slight simplification, dropping a redundant import) |
m (→{{header|R}}) |
||
Line 5,401:
=={{header|R}}==
===Iterative version===
<lang
} else
k <- n▼
while (j < k) {▼
j <- j + 1▼
k <- k - 1▼
}
}
▲ j <- i + 1
▲ k <- n
▲ while (j < k) {
▲ x <- p[j]
▲ p[j] <- p[k]
▲ p[k] <- x
▲ j <- j + 1
▲ k <- k - 1
▲ j <- n
▲ while (p[j] > p[i]) j <- j - 1
▲ j <- j + 1
x <- p[i]▼
▲ p[i] <- p[j]
▲ p[j] <- x
}
while (!is.null(p)) {▼
repeat {
a <- next.perm(a)
}
unname(e)
'''Example'''
▲# 1 2 3
▲# 3 2 1</lang>
<lang>> perm(3)
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 1 2 2 3 3
[2,] 2 3 1 3 1 2
[3,] 3 2 3 1 2 1</lang>
===Recursive version===
<lang r># list of the vectors by inserting x in s at position 0...end.
linsert <- function(x,s) lapply(0:length(s), function(k) append(s,x,k))
|