(defun fortunecookie ()
(princ "名前または学籍番号を入力:")
(let* ((id (read-line))
(now (multiple-value-list (decode-universal-time (get-universal-time))))
(year (nth 5 now))
(month (nth 4 now))
(day (nth 3 now))
;; YYYYMMDD の文字列
(date-str (format nil "~4,'0D~2,'0D~2,'0D" year month day))
;; ID + 日付をまとめたシード文字列
(full-seed-str (concatenate 'string id date-str))
(char-codes (map 'list #'char-code full-seed-str))
(seed (reduce #'+ char-codes :initial-value 0))
(fortunes '("大吉!挑戦を続けよう"
"中吉!今日は集中の日"
"小吉!まずは一歩"
"吉!粘り勝ちを目指そう"
"凶…でも明日がある!"))
(result (nth (mod seed (length fortunes)) fortunes)))
(format t "~%結果:~A~%" result)))
KGRlZnVuIGZvcnR1bmVjb29raWUgKCkKICAocHJpbmMgIuWQjeWJjeOBvuOBn+OBr+WtpuexjeeVquWPt+OCkuWFpeWKm++8miIpCiAgKGxldCogKChpZCAocmVhZC1saW5lKSkKICAgICAgICAgKG5vdyAobXVsdGlwbGUtdmFsdWUtbGlzdCAoZGVjb2RlLXVuaXZlcnNhbC10aW1lIChnZXQtdW5pdmVyc2FsLXRpbWUpKSkpCiAgICAgICAgICh5ZWFyIChudGggNSBub3cpKQogICAgICAgICAobW9udGggKG50aCA0IG5vdykpCiAgICAgICAgIChkYXkgKG50aCAzIG5vdykpCiAgICAgICAgIDs7IFlZWVlNTUREIOOBruaWh+Wtl+WIlwogICAgICAgICAoZGF0ZS1zdHIgKGZvcm1hdCBuaWwgIn40LCcwRH4yLCcwRH4yLCcwRCIgeWVhciBtb250aCBkYXkpKQogICAgICAgICA7OyBJRCArIOaXpeS7mOOCkuOBvuOBqOOCgeOBn+OCt+ODvOODieaWh+Wtl+WIlwogICAgICAgICAoZnVsbC1zZWVkLXN0ciAoY29uY2F0ZW5hdGUgJ3N0cmluZyBpZCBkYXRlLXN0cikpCiAgICAgICAgIChjaGFyLWNvZGVzIChtYXAgJ2xpc3QgIydjaGFyLWNvZGUgZnVsbC1zZWVkLXN0cikpCiAgICAgICAgIChzZWVkIChyZWR1Y2UgIycrIGNoYXItY29kZXMgOmluaXRpYWwtdmFsdWUgMCkpCiAgICAgICAgIChmb3J0dW5lcyAnKCLlpKflkInvvIHmjJHmiKbjgpLntprjgZHjgojjgYYiCiAgICAgICAgICAgICAgICAgICAgICLkuK3lkInvvIHku4rml6Xjga/pm4bkuK3jga7ml6UiCiAgICAgICAgICAgICAgICAgICAgICLlsI/lkInvvIHjgb7jgZrjga/kuIDmrakiCiAgICAgICAgICAgICAgICAgICAgICLlkInvvIHnspjjgorli53jgaHjgpLnm67mjIfjgZ3jgYYiCiAgICAgICAgICAgICAgICAgICAgICLlh7bigKbjgafjgoLmmI7ml6XjgYzjgYLjgovvvIEiKSkKICAgICAgICAgKHJlc3VsdCAobnRoIChtb2Qgc2VlZCAobGVuZ3RoIGZvcnR1bmVzKSkgZm9ydHVuZXMpKSkKICAgIChmb3JtYXQgdCAifiXntZDmnpzvvJp+QX4lIiByZXN1bHQpKSkK