第209話 何とか作ってみたけれど
「なかなかエグい課題が出たようなのです」
課題等についての情報は今は同じ学科内ではWebや掲示板等で共有される。
先輩等が意図せず後輩に答を教えてしまうのを防ぐためである。
「そうなんですよ。もうどうやって解けばいいか、考えつかない……」
詩織先輩への青葉の返答には僕も同意。
なお典明は既にいくつか解法を思いついているらしい。
どれが一番効率がいいかなとか小さく呟いていたし。
「解法そのものを教えると親父に怒られるので、こういう場合の解き方の定番だけをこっそり独り言で言わせて貰うのです。
まずわからない場合は、自分の手で迷路を解く行為を何度かやってみるのです。その上で、自分の考え方をフローチャートに落とすです。その時細かい作業を全部チャートに落とす事が重要なのです。そうしないと答にたどり着けないのです」
うん、それが正攻法なんだろうな。
つまりまず手で何度か解いてみて
面倒だがどうもそれしかなさそうだ。
「取り敢えず刀の注文残は私と香緒里先輩でやっておくので心配いらないのです。頑張って課題をなんとかするのです」
と詩織先輩から有り難いお言葉をいただき、課題に取り組む。
なお刀の注文残は10振り程。
100振りも用意したのに結局足りなかったのだ。
まあそれ位なら2人で1週間もあれば余裕だろう。
なので僕は学生会時間中でも課題に集中させて貰う。
◇◇◇
という訳で課題の日の放課後と帰宅後で。
何とか迷路を解く部分以外は作った。
あとは迷路を解く部分。
迷路を人間用に印刷した紙を使いながら考える。
僕が迷路を解く場合は、まず
① 分岐まではまっすぐ進む。
② 分岐は目標地点に近くなる方を選択する
で進むだろう。
そして
③ 行き止まりになった場合、前の分岐まで戻る
の表現を考える。
この場合、行き止まりは戻る方向以外には進めないと定義すればいいだろう。
戻る部分はひとつ前の分岐を記憶しておけば簡単だ。
あと、
④ 一度通った道は基本的に通らない。ただし他に道が無い場合を除く
はどう定義すればいいか。
一度通った道というのは、床に通過したというデータを与えればいいだろう。迷路と同じ大きさの配列を作って、床部分に通過した回数を入れてやればいいか。
それで分岐に来たら、足跡が無ければ②のルールで、足跡があれば足跡の少ない方向へ行く事にしよう。
解法ルーチンを試行錯誤しているとあっという間に時間が経ってしまう。
夜11時を過ぎたのでプログラムはいったん中断。
取り敢えず明日の予習を優先する。
◇◇◇
そんな感じで3日かけてプログラムを制作。
さっきまでの他に追加したルールは1つだけ。
③に対する追加だ。
行き止まりの道は二度と通らなくするための処理。
取り敢えず最後の分岐から次の分岐に行くまでの間のルートは全部記録する。
行き止まりの場合は前の分岐に戻るとともに、行き止まり部分へのルートを足跡回数最大に変更。
これで行き止まりには2度と入らない。
とりあえずこんなものだろうか。
行き止まり以外の足跡がついたルートを印刷するプログラムも作った。
一応これで課題を提出する予定だ。
正直、あまり洗練されたアルゴリズムではない。
迷路の中で頭の悪い人間が迷いながら進んでいるようなプログラム。
迷路のデータによっては同じ場所をぐるっと廻ったりする事もあるし。
ただ自分でも迷路を作成して試した限りでは、これで目的地にたどり着けない事は無かった。
大回りする事はあったけれど。
一応辿り着けるならA評価にはなる筈だ。
これでたどり着けない場所は無いよな、きっと。
今ひとつ自信が無いまま、課題提出の日を迎える。
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます