(loop for flipcount = 0 then (read) for numbers = (sort (loop for i from 1 upto 9 collect i) (lambda (a b) (zerop (random 2)))) then (nconc (reverse (subseq numbers 0 flipcount)) (subseq numbers flipcount)) as steps from 0 until (apply #'< numbers) do (format t "~{~a~^ ~}~%Reverse how many? " numbers) (force-output) finally (format t "~{~a~^ ~}~%Done! That took you ~a steps.~%" numbers steps))