有限ステートマシンで遊ぶ

なんとなく気になったので、有限ステートマシンで遊んでみた。


人工知能初体験なのでまずは挨拶から。

挨拶マシーン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人工知能研究に最適って事がわかった。


続く。