こんにちは。
毎日美味しいつや姫を頂いて相当幸せな松崎です。
佐倉さんと山形県に足を向けて寝られません。
さて、今日は、東北地区大会で出てきたバグを検証してみました。
どんなバグかというと、下図で黄色のように走るところを、緑のように走ってしまうバグです。
これに関しては、パラメータ違いで同じにするつもりだったプログラムが成功しているので、
それと何が違うのか見比べて検証します。
まずは、プログラムをひたすら見比べる。
おっ、早速発見!(使えないプログラムだったので、コメントアウトしています)
410行め、
きちんと動くプログラムでは
straight_count = 0;
となっているのに、なぜかここでは
straight_count++;
となっています。
これにより、曲がるべき場所よりもさらに先で曲がるようになっていたことが判明。
このままで壁と柱をすべて取り除いて、GENIEちゃんが自由にどのように間違えて走るかを見てみると、
ん?曲がってすらいない?
曲がりたそうにすこーし減速して見せるのですが、ん?怪しいぞ?
そこに、佐倉さんが登場!!!
どうやら、GENIEちゃんのこの挙動不審は、それだけが原因ではないようです。
自分ではどうしてもわからない問題を走行の様子からあぶりだそうと、
正しく走るプログラムとの違いを検証するために、
パラメータ(加速度や角加速度等)を全く同じ状態で走行させます。
実際に走らせて~プログラムを確認して~を佐倉さんに付き合ってもらって繰り返した結果、
なんと、このバグが発生するスラローム、どうやってスラロームするかを記した変数の集まりである構造体がすっからかんのままだったのでした。
つまり、なんのパラメータも呼び出さずに走ってたんですね。
ただ、「すらろーむ」しろ!といわれているだけで。
しかもしかも、
さらに佐倉さんといろいろ見ていくと、
プログラムの書き間違いなどが散見される事態に…!!
パラメータ違いでせっかく与えられた走行回数を有意義に、そして挑戦的に使いたいので、
ちゃんと書いてパラメータも調整します!!
と、いろいろいじっていたら
コンパイルが通らなくなった!
どっか変な風に書いちゃってるんだな。
北信越大会が明後日(!)なのですが、がんばって直します。。←死亡フラグ??
— おまけ —
忘れてました。
東北大会で嬉しかったことまだあった。
地元の高校生のかわいい女の子たちが、
全走行のルートを記録してくれていました。
どんな速さで走るかとか、スラロームにばかり気が向いてましたが、
今回このデータを頂いて、どんなアルゴリズムで走るのかな?ということに興味がわいてきました。
「天才」って名前にしたことだし、早さの次は賢さを求めてゆきたい!!