Guest User

Untitled

a guest
Dec 10th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.64 KB | None | 0 0
  1. (defun play-game (max-players last-marble)
  2. (let ((scores (make-hash-table))
  3. (marbles '#1=(0 . #1#)))
  4. (dotimes (marble (1+ last-marble))
  5. (if (zerop (rem (1+ marble) 23))
  6. (let ((end (* 2 (floor marble 23))))
  7. (setf marbles (nthcdr (- marble end 6) marbles)
  8. (cdr (nthcdr (- marble end) marbles)) (cdr marbles))
  9. (incf (gethash (rem marble max-players) scores 0)
  10. (+ 1 marble (pop marbles))))
  11. (setf (cddr marbles) (cons (1+ marble) (cddr marbles))
  12. marbles (funcall (if (= 0 marble) 'cdr 'cddr) marbles))))
  13. (reduce 'max (cons 0 (vals scores)))))
Add Comment
Please, Sign In to add comment