diff options
Diffstat (limited to 'test/bench/fannkuch.go')
-rw-r--r-- | test/bench/fannkuch.go | 52 |
1 files changed, 26 insertions, 26 deletions
diff --git a/test/bench/fannkuch.go b/test/bench/fannkuch.go index 90e6fb899..b554c77b1 100644 --- a/test/bench/fannkuch.go +++ b/test/bench/fannkuch.go @@ -38,8 +38,8 @@ POSSIBILITY OF SUCH DAMAGE. package main import ( - "flag"; - "fmt"; + "flag" + "fmt" ) var n = flag.Int("n", 7, "count") @@ -49,45 +49,45 @@ func fannkuch(n int) int { return 0 } - n1 := n - 1; - perm := make([]int, n); - perm1 := make([]int, n); - count := make([]int, n); + n1 := n - 1 + perm := make([]int, n) + perm1 := make([]int, n) + count := make([]int, n) for i := 0; i < n; i++ { - perm1[i] = i // initial (trivial) permutation + perm1[i] = i // initial (trivial) permutation } - r := n; - didpr := 0; - flipsMax := 0; + r := n + didpr := 0 + flipsMax := 0 for { if didpr < 30 { for i := 0; i < n; i++ { fmt.Printf("%d", 1+perm1[i]) } - fmt.Printf("\n"); - didpr++; + fmt.Printf("\n") + didpr++ } for ; r != 1; r-- { count[r-1] = r } if perm1[0] != 0 && perm1[n1] != n1 { - flips := 0; - for i := 1; i < n; i++ { // perm = perm1 + flips := 0 + for i := 1; i < n; i++ { // perm = perm1 perm[i] = perm1[i] } - k := perm1[0]; // cache perm[0] in k - for { // k!=0 ==> k>0 + k := perm1[0] // cache perm[0] in k + for { // k!=0 ==> k>0 for i, j := 1, k-1; i < j; i, j = i+1, j-1 { perm[i], perm[j] = perm[j], perm[i] } - flips++; + flips++ // Now exchange k (caching perm[0]) and perm[k]... with care! - j := perm[k]; - perm[k] = k; - k = j; + j := perm[k] + perm[k] = k + k = j if k == 0 { break } @@ -99,12 +99,12 @@ func fannkuch(n int) int { for ; r < n; r++ { // rotate down perm[0..r] by one - perm0 := perm1[0]; + perm0 := perm1[0] for i := 0; i < r; i++ { perm1[i] = perm1[i+1] } - perm1[r] = perm0; - count[r]--; + perm1[r] = perm0 + count[r]-- if count[r] > 0 { break } @@ -113,10 +113,10 @@ func fannkuch(n int) int { return flipsMax } } - return 0; + return 0 } func main() { - flag.Parse(); - fmt.Printf("Pfannkuchen(%d) = %d\n", *n, fannkuch(*n)); + flag.Parse() + fmt.Printf("Pfannkuchen(%d) = %d\n", *n, fannkuch(*n)) } |