← All examplesscores.zg Output
Scores
fn is_even ['n': int32] -> bool {
return ('n' mod.floor 2) equal_to 0;
}
fn clamp ['n': int32, 'low': int32, 'high': int32] -> int32 {
if 'n' < 'low' {
return 'low';
} else if 'n' > 'high' {
return 'high';
} else {
return 'n';
}
}
MAIN {
let 'scores' := [72, 95, 38, 100, 61, 87];
let 'count' := 0;
let 'total' := 0;
let 'evens' := 0;
let 'best' := 0;
for 'score' in lend 'scores' {
change 'count' = 'count' plus 1;
change 'total' = 'total' plus 'score';
if is_even['score'] {
change 'evens' = 'evens' plus 1;
}
if 'score' > 'best' {
change 'best' = 'score';
}
}
let 'average' := 'total' div.floor 'count';
let 'curved' := clamp['average' plus 10, 0, 100];
std::print.useful["scored ", 'count', " tests", newln];
std::print.useful["total ", 'total', ", best ", 'best', newln];
std::print.useful["even scores: ", 'evens', newln];
std::print.useful["average ", 'average', ", curved ", 'curved', newln];
if 'average' at_least 90 {
std::print.useful["grade A", newln];
} else if 'average' at_least 75 {
std::print.useful["grade B", newln];
} else {
std::print.useful["keep going", newln];
}
}
scored 6 tests total 453, best 100 even scores: 3 average 75, curved 85 grade B