18 lines
659 B
Common Lisp
18 lines
659 B
Common Lisp
(defpackage :rpg-generator
|
|
(:use :cl)
|
|
(:export :generate))
|
|
(in-package :rpg-generator)
|
|
(defun sufficient-scores-p (scores)
|
|
(and (>= (apply #'+ scores) 75)
|
|
(>= (count-if #'(lambda (n) (>= n 15)) scores) 2)))
|
|
|
|
(defun gen-score ()
|
|
(apply #'+ (rest (sort (loop repeat 4 collect (1+ (random 6))) #'<))))
|
|
|
|
(defun generate ()
|
|
(loop for scores = (loop repeat 6 collect (gen-score))
|
|
until (sufficient-scores-p scores)
|
|
finally (format t "Scores: ~A~%" scores)
|
|
(format t "Total: ~A~%" (apply #'+ scores))
|
|
(format t ">= 15: ~A~%" (count-if (lambda (n) (>= n 15)) scores))
|
|
(return scores)))
|