program rpg_attributes_generator; setrandom(0); print(stats := genstats(), 'total:', +/stats); proc genstats(); loop until valid(stats) do stats := [roll4() : i in [1..6]]; end loop; return stats; end proc; proc valid(stats); return +/stats >= 75 and #[s in stats | s >= 15] >= 2; end proc; proc roll4(); rolls := [roll() : i in [1..4]]; return +/rolls - min/rolls; end proc; proc roll(); return 1 + random(5); end proc; end program;