有限ステートマシンで遊ぶ
なんとなく気になったので、有限ステートマシンで遊んでみた。
人工知能初体験なのでまずは挨拶から。
挨拶マシーン1号
挨拶するだけです。ハイ。
(define (good-morning) (display "Good morning.\n") hello) (define (hello) (display "Hello AI World!!\n") good-night) (define (good-night) (display "Good night.\n") good-morning) (define (bye!) (display "bye!")) (define (main state n) (if (= n 0) (bye!) (main (state) (- n 1))))
えっと、朝 → 昼 → 晩 → 朝 → 昼 → 晩 → ...終わり。と状態を切り替えてます。オブジェクト指向ではStateパターンと言うらしいのですが、Schemeでは手続きを返すだけですハイ。簡単です。
手続きを返す手続きがあって、手続きを返す手続きがあって、手続きを返す手続きがあって・・・。作用してない手続きを返すって所がミソ。
実行してみまっす。
(main good-morning 10) Good morning. Hello AI World!! Good night. Good morning. Hello AI World!! Good night. Good morning. Hello AI World!! Good night. Good morning. bye!
挨拶マシーン完成〜。
条件文を付けたらすげぇ楽しそうだ。
よくわかんないけどLispが人工知能研究に最適って事がわかった。
続く。