| // $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"); |
| } |
| } |