RosettaCodeData/Task/RPG-attributes-generator/Dyalect/rpg-attributes-generator.dyalect
2023-07-01 13:44:08 -04:00

44 lines
783 B
Text

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"))
}