Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (defun play-game (max-players last-marble)
- (let ((scores (make-hash-table))
- (marbles '#1=(0 . #1#)))
- (dotimes (marble (1+ last-marble))
- (if (zerop (rem (1+ marble) 23))
- (let ((end (* 2 (floor marble 23))))
- (setf marbles (nthcdr (- marble end 6) marbles)
- (cdr (nthcdr (- marble end) marbles)) (cdr marbles))
- (incf (gethash (rem marble max-players) scores 0)
- (+ 1 marble (pop marbles))))
- (setf (cddr marbles) (cons (1+ marble) (cddr marbles))
- marbles (funcall (if (= 0 marble) 'cdr 'cddr) marbles))))
- (reduce 'max (cons 0 (vals scores)))))
Add Comment
Please, Sign In to add comment