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

Normal Distribution Table

CommonLisp Golf

あなごる - kozima の日記 - cadr group
anarchy golf - Normal Distribution Table
2バイト差だったけど解答見ると結構違うなあ。
自分の

(format t"  Z |~{ 0.0~d~^  ~}
----+~70@{-~}"'(0 1 2 3 4 5 6 7 8 9)t)(dotimes(i 310)(format t"~[
~,,-2f |~] ~2@*~,4f"(mod i 10)i(/(erfc(/ i -100(sqrt 2)))2)))

表頭の出力が大変残念な感じ。最初に投稿したコードでは(loop for i ... collect i)とかやっててさらに長かったけど一見残念度は低いように見える不思議。range関数ほしい。

正規分布の計算方法は

(/(1+(erf(*(sqrt 5d-5)x)))2) ;kozima
(/(erfc(/ i -100(sqrt 2)))2) ;youz

で差がないな、と思ったけど自分の方は

(/(erfc(/ x -141.42136))2)

で良かった。

あともう1つポイントは表側の出力で、少数点の位置を指定するマイナー?な第3パラメータを使うと(/ x 100)とかしなくて済む。

(loop for i from -9 to 9 do (format t "~,,VF~%" i i))

; -0.000000009
; -0.00000008
; -0.0000007
; -0.000006
; -0.00005
; -0.0004
; -0.003
; -0.02
; -0.1
; 0.0
; 10.0
; 200.0
; 3000.0
; 40000.0
; 500000.0
; 6000000.0
; 70000000.0
; 800000000.0
; 9000000000.0

残念ながらxyzzyでは使えない模様。使いたくなるような事は滅多にないだろうけど。