func getThree(n) { var g3 = [] for i in 0..33 { g3.Add(rnd(max: n) + 1) } g3.Sort() g3.RemoveAt(0) g3 } func getSix() { var g6 = [] for i in 0..5 { g6.Add(getThree(6).Sum()) } g6 } func Array.Sum() { var acc = 0 for x in this { acc += x } acc } func Array.FindAll(pred) { for x in this when pred(x) { yield x } } var good = false while !good { var gs = getSix() var gss = gs.Sum() var hvc = gs.FindAll(x => x > 14).Length() print("attribs: \(gs), sum=\(gss), ", terminator: "") let gl = gss >= 75 ? "good" : "low" print("(\(gl) sum, high vals=\(hvc))", terminator: "") good = gs.Sum() >= 75 && hvc > 1 print(" - " + (good ? "success" : "failure")) }