見出し画像

Retro-gaming and so on

RE: Racketで何か動くものを作れるかな?004


今回はマジでヒントを一つだけ。
だって「実用Common Lispを既に買ってる」みたいだしね。
第18章は「探索とオセロゲーム」だ。
ここではオセロゲームの作り方が書いてある。
つまり、盤面表示に対してのヒントが満載だ。
ANSI Common Lispの配列(array)はSchemeのvectorだ。
だから考え方は参考になるでしょう。

なお、前にも書いたけど、Lispに於いて、リストは可変長だけど、配列は一旦生成したら長さは変わらない。
そしてリスト操作はcarcdrが基本で、ある要素にアクセスする際には原理的にはcarcdrを適用しまくらないとならないので、アクセス時間はそんなに速くない。むしろリストが巨大になればなるほど「計算時間がかかる」事になる。
リストは柔軟なんだけど、「だからこそ」計算コストがかかる、って事なんだ。
反面、配列はconsじゃない。だから要素は「位置」ですぐさま確定するんだな。
つまり、「要素を探す」って意味だとコストがかからない、って特徴がある。
その代わり柔軟性はリストに比べると大きく落ちる、と言うわけ。
Land of Lispに書いてたと思うんだけど、基本的にはリストで作っていって、ある程度見通しが良くなった時点でベクタ(配列)にチェンジする、でフツーはいいと思います。

なお、書いてなかったけど、別に実用Common Lispは「通読」しないでも構いません。かなりの確率で各章は独立してるし、前の章で作った関数なんかも使ったりするけど、著者のページでそれらはダウンロード可能なんで、それを使えば済むケースが多いです。
むしろ、「困ったときに」辞書的に使えるのがこの本の良いトコだと思うんで、今回のような「端末にどうやって色々と表示すんのか?」なんて場合、圧倒的に実用Common Lispは貴重なヒントを与えてくれるでしょう。
実用Common Lispは、AIに限らず、プログラミングの長年に渡る叡智が総覧的に詰め込まれてるのです。
(だからこそ高いけど薦めたわけですが)




  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「RE: Racketで何か」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事