]> Cypherpunks.ru repositories - gostls13.git/blobdiff - test/235.go
cmd/compile/internal/inline: score call sites exposed by inlines
[gostls13.git] / test / 235.go
index e24106dd00cca538d72fc677bd0055565d6d6b56..6745dde41ab7d8560f32e1ee526c1d6efd63f611 100644 (file)
@@ -1,39 +1,42 @@
-// $G $F.go && $L $F.$A && ./$A.out
+// run
 
 // 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.
 
+// Solve the 2,3,5 problem (print all numbers with 2, 3, or 5 as factor) using channels.
+// Test the solution, silently.
+
 package main
 
-type T chan uint64;
+type T chan uint64
 
 func M(f uint64) (in, out T) {
-       in = make(T, 100);
-       out = make(T, 100);
+       in = make(T, 100)
+       out = make(T, 100)
        go func(in, out T, f uint64) {
                for {
-                       out <- f * <-in;
+                       out <- f*<-in
                }
-       }(in, out, f);
-       return in, out;
+       }(in, out, f)
+       return in, out
 }
 
 
 func min(xs []uint64) uint64 {
-       m := xs[0];
+       m := xs[0]
        for i := 1; i < len(xs); i++ {
                if xs[i] < m {
-                       m = xs[i];
+                       m = xs[i]
                }
        }
-       return m;
+       return m
 }
 
 
 func main() {
-       F := []uint64{2, 3, 5};
-       var n = len(F);
+       F := []uint64{2, 3, 5}
+       var n = len(F)
        OUT := []uint64{
                2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 25, 27, 30, 32, 36,
                40, 45, 48, 50, 54, 60, 64, 72, 75, 80, 81, 90, 96, 100, 108, 120, 125,
@@ -41,29 +44,32 @@ func main() {
                256, 270, 288, 300, 320, 324, 360, 375, 384, 400, 405, 432, 450, 480,
                486, 500, 512, 540, 576, 600, 625, 640, 648, 675, 720, 729, 750, 768,
                800, 810, 864, 900, 960, 972, 1000, 1024, 1080, 1125, 1152, 1200, 1215,
-               1250, 1280, 1296, 1350, 1440, 1458, 1500, 1536, 1600 };
+               1250, 1280, 1296, 1350, 1440, 1458, 1500, 1536, 1600}
 
-       x := uint64(1);
-       ins := make([]T, n);
-       outs := make([]T, n);
-       xs := make([]uint64, n);
+       x := uint64(1)
+       ins := make([]T, n)
+       outs := make([]T, n)
+       xs := make([]uint64, n)
        for i := 0; i < n; i++ {
-               ins[i], outs[i] = M(F[i]);
-               xs[i] = x;
+               ins[i], outs[i] = M(F[i])
+               xs[i] = x
        }
 
        for i := 0; i < len(OUT); i++ {
-               t := min(xs);
                for i := 0; i < n; i++ {
-                       ins[i] <- x;
+                       ins[i] <- x
                }
 
                for i := 0; i < n; i++ {
-                       if xs[i] == x { xs[i] = <- outs[i]; }
+                       if xs[i] == x {
+                               xs[i] = <-outs[i]
+                       }
                }
 
-               x = min(xs);
-               if x != OUT[i] { panic("bad: ", x, " should be ", OUT[i]); }
+               x = min(xs)
+               if x != OUT[i] {
+                       println("bad: ", x, " should be ", OUT[i])
+                       panic("235")
+               }
        }
-       sys.Exit(0);
 }