(defun fortunecookie ()
(princ "名前または学籍番号を入力:")
(let* ((id (read-line))
;; 今日の日付を取得して文字列にする(YYYYMMDD形式)
(date (multiple-value-bind (sec min hour day month year)
(get-decoded-time)
(format nil "~4,'0d~2,'0d~2,'0d" year month day)))
;; 名前と日付をつなげる
(combined (concatenate 'string id date))
;; 各文字の文字コードを合計
(seed (reduce #'+ (map 'list #'char-code combined)))
;; seedを5で割った余りでおみくじを選ぶ
(index (mod seed 5))
(result (nth index
'("大吉! 挑戦を続けよう"
"中吉! 今日は集中の日"
"小吉! まずは一歩"
"吉! 粘り勝ちを目指そう"
"凶...でも明日がある!"))))
(format t "結果:~A~%" result)))
(fortunecookie)
KGRlZnVuIGZvcnR1bmVjb29raWUgKCkKICAocHJpbmMgIuWQjeWJjeOBvuOBn+OBr+WtpuexjeeVquWPt+OCkuWFpeWKm++8miIpCiAgKGxldCogKChpZCAocmVhZC1saW5lKSkKICAgICAgICAgOzsg5LuK5pel44Gu5pel5LuY44KS5Y+W5b6X44GX44Gm5paH5a2X5YiX44Gr44GZ44KL77yIWVlZWU1NRETlvaLlvI/vvIkKICAgICAgICAgKGRhdGUgKG11bHRpcGxlLXZhbHVlLWJpbmQgKHNlYyBtaW4gaG91ciBkYXkgbW9udGggeWVhcikKICAgICAgICAgICAgICAgICAgICAoZ2V0LWRlY29kZWQtdGltZSkKICAgICAgICAgICAgICAgICAgKGZvcm1hdCBuaWwgIn40LCcwZH4yLCcwZH4yLCcwZCIgeWVhciBtb250aCBkYXkpKSkKICAgICAgICAgOzsg5ZCN5YmN44Go5pel5LuY44KS44Gk44Gq44GS44KLCiAgICAgICAgIChjb21iaW5lZCAoY29uY2F0ZW5hdGUgJ3N0cmluZyBpZCBkYXRlKSkKICAgICAgICAgOzsg5ZCE5paH5a2X44Gu5paH5a2X44Kz44O844OJ44KS5ZCI6KiICiAgICAgICAgIChzZWVkIChyZWR1Y2UgIycrIChtYXAgJ2xpc3QgIydjaGFyLWNvZGUgY29tYmluZWQpKSkKICAgICAgICAgOzsgc2VlZOOCkjXjgaflibLjgaPjgZ/kvZnjgorjgafjgYrjgb/jgY/jgZjjgpLpgbjjgbYKICAgICAgICAgKGluZGV4IChtb2Qgc2VlZCA1KSkKICAgICAgICAgKHJlc3VsdCAobnRoIGluZGV4CiAgICAgICAgICAgICAgICAgICAgICAnKCLlpKflkInvvIEg5oyR5oim44KS57aa44GR44KI44GGIgogICAgICAgICAgICAgICAgICAgICAgICAi5Lit5ZCJ77yBIOS7iuaXpeOBr+mbhuS4reOBruaXpSIKICAgICAgICAgICAgICAgICAgICAgICAgIuWwj+WQie+8gSDjgb7jgZrjga/kuIDmrakiCiAgICAgICAgICAgICAgICAgICAgICAgICLlkInvvIEg57KY44KK5Yud44Gh44KS55uu5oyH44Gd44GGIgogICAgICAgICAgICAgICAgICAgICAgICAi5Ye2Li4u44Gn44KC5piO5pel44GM44GC44KL77yBIikpKSkKICAgIChmb3JtYXQgdCAi57WQ5p6c77yafkF+JSIgcmVzdWx0KSkpCgooZm9ydHVuZWNvb2tpZSk=