だから、私は今Land of Lispを読んでいて、Lispは私が見た他のプログラミング言語とはかなり異なっていることがわかった。
とにかく、この本は、CLISPREPLに入力することを意図したいくつかのコードを提供します。
(defparameter *small* 1)
(defparameter *big* 100)
(defun guess-my-number ()
(ash (+ *small* *big*) -1))
(defun smaller ()
(setf *big* (1- (guess-my-number)))
(guess-my-number))
(defun bigger ()
(setf *small* (1+ (guess-my-number)))
(guess-my-number))
さて、基本的な目標は、ユーザー/プレーヤーが数字を選択し、コンピューターが数字を推測しようとする数字推測ゲームを作成することです。コンピュータが推測した数がプレーヤーの数よりも多いか少ないかをプレーヤーに報告させることにより、プレーヤーの数を見つけるために「二分探索」を実行します。
関数について少し混乱していash
ます。これは二分探索に不可欠であると私は理解していますが、その理由はよくわかりません。この本はそれが何をするのかをいくらか説明していますが、少し混乱しています。
関数は何をしash
ますか?*small*
なぜaddedto*big*
とのパラメータが渡されるの-1
ですか?それはどのように機能しますか?二分探索にはどのような目的がありますか?