// $G $F.go && $L $F.$A && ./$A.out | |
// Copyright 2009 The Go Authors. All rights reserved. | |
// Use of this source code is governed by a BSD-style | |
// license that can be found in the LICENSE file. | |
package main | |
var a,b,c,d,e,f,g,h,i int; | |
func | |
printit() | |
{ | |
println(a,b,c,d,e,f,g,h,i); | |
} | |
func | |
testit(permuteok bool) bool | |
{ | |
if a+b+c+d+e+f+g+h+i != 45 { | |
print("sum does not add to 45\n"); | |
printit(); | |
return false; | |
} | |
return permuteok || | |
a == 1 && | |
b == 2 && | |
c == 3 && | |
d == 4 && | |
e == 5 && | |
f == 6 && | |
g == 7 && | |
h == 8 && | |
i == 9; | |
} | |
func | |
swap(x, y int) (u, v int) { | |
return y, x | |
} | |
func | |
main() | |
{ | |
a = 1; | |
b = 2; | |
c = 3; | |
d = 4; | |
e = 5; | |
f = 6; | |
g = 7; | |
h = 8; | |
i = 9; | |
if !testit(false) { panic("init val\n"); } | |
for z:=0; z<100; z++ { | |
a,b,c,d, e,f,g,h,i = b,c,d,a, i,e,f,g,h; | |
if !testit(z%20 != 19) { | |
print("on ", z, "th iteration\n"); | |
printit(); | |
panic(); | |
} | |
} | |
if !testit(false) { | |
print("final val\n"); | |
printit(); | |
panic(); | |
} | |
a, b = swap(1, 2); | |
if a != 2 || b != 1 { | |
panic("bad swap"); | |
} | |
a, b = swap(swap(a, b)); | |
if a != 2 || b != 1 { | |
panic("bad swap"); | |
} | |
} |