2018年7月16日月曜日

アルゴリズムパズル 1.狼と山羊とキャベツ 実装例[Rust]

1. 概要

『アルゴリズムパズル ―プログラマのための数学パズル入門』という本を見つけたので,今勉強しているCommon Lispの練習として使ってみようと思ったが,思ったより苦戦してしまって癪だったのでRustで実装した.
有名な問題なのでググれば出てくるがこの本はパズルの問題文・ヒント・解法が羅列されているという少し特殊な本で,ブログにパズルの内容について書くのは引用に収まるのか?という疑問がある.
そのためパズルの名前と僕の解答(ソースコードとかんたんな解法)についてのみ書いておく.

2. 解答

Rustで幅優先探索で解いた.


3.感想

思ったより書きにくかった.コードもあまりきれいじゃない.

気になったこととしてはRustについてで,get_all_statesの引数の変数名を,あとで使う変数名と違うものにしないとうまく動作しなかった.
同じ変数名は後で定義された変数で前に定義された変数が隠蔽されるようになっていたはずだけれど,思ったとおりの挙動をしなかった.