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

CLでpangram

HackerNews見てたら有名なパングラムのアレの実写映像が。
The quick brown fox ... | Typophile
…か、かわいい!

折角なのでPanprogram(?)をCLで書いてみた。
文字列とか適当な名前のシンボルを使っちゃうとつまらないので、CLパッケージからexportされてるシンボルのみカウントする、という事にします。

(defvar n (read))
(check-type n number)
(if (zerop n) (write n)
  (let* ((c (expt n 1/3))
	 (w (* c (cis (* pi 2/3)))))
    (format t "~A~%~A~%~A" c w (conjugate w))))
(quit)

実数を入力すると立方根を表示するプログラム。
Jを含む短いシンボルが少ないので、無理矢理conjugateを使おうとした結果こんな感じに。
虚数を入力されると答えを間違えるのに(check-type n number)としてる所がアレです。

他言語で予約語パングラムとか絶対やってる人いるよなーと思ったのだけどググり方が悪いのかなかなか見つからない。

追記

調べてみたら元の映像は結構前にYouTubeに上がってたみたい。

QUIT

CLパッケージじゃなかった

[1]> (find-symbol "QUIT" :CL)
NIL ;
NIL
[2]> (find-symbol "QUIT" :CL-USER)
QUIT ;
:INHERITED
[3]> (find-symbol "QUIT" :EXT)
QUIT ;
:EXTERNAL

実装ごとに用意されてるんだな。