|
Groovy example source code file (fannkuch.groovy)
The Groovy fannkuch.groovy source code/* The Computer Language Benchmarks Game http://shootout.alioth.debian.org/ contributed by Brian Schlining */ def n = 7 if (args.length > 0) { n = Integer.parseInt(args[0]) } println("Pfannkuchen(" + n + ") = " + fannkuch(n)) def fannkuch(int n) { int check = 0 int[] perm = new int[n] int[] perm1 = new int[n] int[] count = new int[n] int[] maxPerm = new int[n] int maxFlipsCount = 0 int m = n - 1 for (i in 0..<n) { perm1[i] = i } int r = n while (true) { // write-out the first 30 permutations if (check < 30){ for (i in 0..<n) { print(perm1[i] + 1) } print("\n") check++ } while (r != 1) { count[r - 1] = r r-- } if (!(perm1[0] == 0 || perm1[m] == m)) { for (i in 0..<n) { perm[i] = perm1[i] } int flipsCount = 0 int k while (!((k = perm[0]) == 0)) { int k2 = (k + 1) >> 1 for (i in 0..<k2) { int temp = perm[i] perm[i] = perm[k - i] perm[k - i] = temp } flipsCount++ } if (flipsCount > maxFlipsCount) { maxFlipsCount = flipsCount for (i in 0..<n) { maxPerm[i] = perm1[i] } } } while (true) { if (r == n) { return maxFlipsCount } int perm0 = perm1[0] int i = 0 while (i < r) { int j = i + 1 perm1[i] = perm1[j] i = j } perm1[r] = perm0 count[r] = count[r] - 1 if (count[r] > 0) { break } r++ } } } Other Groovy examples (source code examples)Here is a short list of links related to this Groovy fannkuch.groovy source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.