fork download
  1. (defun probability-of-kill (sides health)
  2. (* (/ (expt sides (floor health sides)))
  3. (if (> (mod health sides) 0)
  4. (/ (1+ (- sides (mod health sides))) sides)
  5. 1)))
  6.  
  7. (progn
  8. (dolist (x '((4 1)
  9. (4 4)
  10. (4 5)
  11. (4 6)
  12. (1 10)
  13. (100 200)
  14. (8 20)))
  15. (format t "~a sides, ~a health -> ~9$ probability~%"
  16. (first x)
  17. (second x)
  18. (probability-of-kill (first x) (second x))))
  19. (terpri))
Success #stdin #stdout 0.02s 10528KB
stdin
Standard input is empty
stdout
4 sides, 1 health -> 1.000000000 probability
4 sides, 4 health -> 0.250000000 probability
4 sides, 5 health -> 0.250000000 probability
4 sides, 6 health -> 0.187500000 probability
1 sides, 10 health -> 1.000000000 probability
100 sides, 200 health -> 0.000100000 probability
8 sides, 20 health -> 0.009765625 probability