(defun make-circular-list (list)
(setf list (nconc list list)))
(defun odai-pt11-117 (subseq seq)
(loop for x in (make-circular-list (coerce subseq 'list))
for pos = (position x seq)
then (position x seq :start (1+ pos))
while pos
sum 1 into n
finally (return (floor n (length subseq)))))
(dolist (s '("odaiodai"
"ooddaai"
"idao"
"ododoadioadioadioadioadioadiodaioadodioadiaodi"))
(format t "~A -> ~D~%" s (odai-pt11-117 "odai" s)))
KGRlZnVuIG1ha2UtY2lyY3VsYXItbGlzdCAobGlzdCkKICAoc2V0ZiBsaXN0IChuY29uYyBsaXN0IGxpc3QpKSkKCihkZWZ1biBvZGFpLXB0MTEtMTE3IChzdWJzZXEgc2VxKQogIChsb29wIGZvciB4IGluIChtYWtlLWNpcmN1bGFyLWxpc3QgKGNvZXJjZSBzdWJzZXEgJ2xpc3QpKQogICAgICAgIGZvciBwb3MgPSAocG9zaXRpb24geCBzZXEpCiAgICAgICAgICB0aGVuIChwb3NpdGlvbiB4IHNlcSA6c3RhcnQgKDErIHBvcykpCiAgICAgICAgd2hpbGUgcG9zCiAgICAgICAgc3VtIDEgaW50byBuCiAgICAgICAgZmluYWxseSAocmV0dXJuIChmbG9vciBuIChsZW5ndGggc3Vic2VxKSkpKSkKCihkb2xpc3QgKHMgJygib2RhaW9kYWkiCiAgICAgICAgICAgICAib29kZGFhaSIKICAgICAgICAgICAgICJpZGFvIgogICAgICAgICAgICAgIm9kb2RvYWRpb2FkaW9hZGlvYWRpb2FkaW9hZGlvZGFpb2Fkb2Rpb2FkaWFvZGkiKSkKICAoZm9ybWF0IHQgIn5BIC0+IH5EfiUiIHMgKG9kYWktcHQxMS0xMTcgIm9kYWkiIHMpKSkK