読者です 読者をやめる 読者になる 読者になる

そして逃避

RubyKaigi2008 Golfコンペ
複利計算の問題をCLで書いてみる。

(let* ((l (read-from-string
           (substitute #\  #\: (format nil "(~A)" (read-line)))))
       (m (cadr l)))
  (dotimes (i (car l))
    (incf m (floor (* (print m)
                      (caddr l) 0.01)))))

xyzzyで動かすときは s/#\ /#\SPC/

スペースと改行削って148byte? 長いなー
スマートなパースの仕方が分からない。

追記

Golf場の中のCL処理系はClispで、正規表現パッケージが使えるらしい。
というわけで使い方ググって書き直してみる。ついでにlambda投入。

(apply(lambda(x y z)(dotimes(i x)(incf y(floor(* z(print y)0.01)))))
(mapcar #'parse-integer(regexp::regexp-split ":"(read-line))))

130字。
mapcar以降を元のread-from-string〜に戻すと136字。
mergeという関数を見つけた。が、使えなさそう。