数値から数字のリストへの変換とか。
どもです。
ぼちぼちと,Project Euler の問題を解いていますよっと。
現在42問目とかかな。
んで,その中でよく使う処理をメモでもしておいて,エントリとしようかという企て。
数値から数字のリストへの変換
CL-USER> (num-to-list 123456789) (1 2 3 4 5 6 7 8 9)
という感じにしてくれます。リストにしなくてもいいかもしれんが,
リストにしておくと色々と助かることがあるわけでして。
コード。
(defun num-to-list (num) (mapcar (lambda (ch) (- (char-code ch) (char-code #\0))) (coerce (format nil "~A" num) 'list)))
format のところは,write-to-string でもオッケー牧場なはず。
むしろ,better かも。
REPL バッファでのカレントディレクトリの変更
以前にはまって,今回もはまったので,いい加減メモしておこうということです。
何に? というと,相対パスを使用してファイルを読もうとした時に,
カレントディレクト? が三途の川の向こう岸で,
ファイルを読めないぞと怒られるわけです。
んで,sb-posix:chdir という関数を使用してみたけど,ダメ。
Emacs から M-x cd してもダメでした。
で,今のところの正解は,変数 *default-pathname-defaults* に,
ご希望のディレクトを設定するという方法です。
要するに,
(setf *default-pathname-defaults* #P"/wherever/you/like/")
とかすれば大丈夫だと思う。
まとめ
目指せ50問!
今宵,そして明日はぐっと寒くなるそうです。