Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,22 @@
|
|||
def factorial = { (it > 1) ? (2..it).inject(1) { i, j -> i*j } : 1 }
|
||||
|
||||
def makePermutation;
|
||||
makePermutation = { list, i ->
|
||||
def n = list.size()
|
||||
if (n < 2) return list
|
||||
def fact = factorial(n-1)
|
||||
assert i < fact*n
|
||||
|
||||
def index = i.intdiv(fact)
|
||||
[list[index]] + makePermutation(list[0..<index] + list[(index+1)..<n], i % fact)
|
||||
}
|
||||
|
||||
def sorted = { a -> (1..<(a.size())).every { a[it-1] <= a[it] } }
|
||||
|
||||
def permutationSort = { a ->
|
||||
def n = a.size()
|
||||
def fact = factorial(n)
|
||||
def permuteA = makePermutation.curry(a)
|
||||
def pIndex = (0..<fact).find { print "."; sorted(permuteA(it)) }
|
||||
permuteA(pIndex)
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
println permutationSort([7,0,12,-45,-1])
|
||||
println ()
|
||||
println permutationSort([10, 10.0, 10.00, 1])
|
||||
println permutationSort([10, 10.00, 10.0, 1])
|
||||
println permutationSort([10.0, 10, 10.00, 1])
|
||||
println permutationSort([10.0, 10.00, 10, 1])
|
||||
println permutationSort([10.00, 10, 10.0, 1])
|
||||
println permutationSort([10.00, 10.0, 10, 1])
|
||||
Loading…
Add table
Add a link
Reference in a new issue