感想
色々あるんだけど、総合して2時間かかった。
30分で入力処理。
30分でアルゴリズムの実装。
んで1時間バグに悩むという流れ。
私も入れないっぽい><。
入力のとまどい
んーと、まぁ、えっと盤面の大きさに見合った配列の宣言で悩む。
しょうがないので、変なクラスひっぱってきて、配列にあとで変換。
ちょっといやらしいコードになってるです。
アルゴリズム
まぁ、頭に最初に浮かんだのが、ああバックトラックねというものだったので、そのまま実装。いわゆる縦型探索のコードになってます。
学生のころは、こういうのをLispやProlog使って書いてたので、まぁ普通に思いつきはしました。
で、実装してトレースしてみると、うへ無駄な動き大杉w。ってことで、あーあーイマイチ選定あやまったなーと。そうはいってもめんどくさいのでそのまま動かしましたw。
A*知ってるか知ってないかじゃん?とかいう人は、ちょっと見識足りないかな。
横型探索にしろ縦型探索にしろ、それは多分常識のひとつ。
んで、募集しているひとは、こういう問題解決型の人材を欲しがっているってことでしょう。それについてあーだこーだいうのは、なんか間違いかな。所詮プログラムなんてのは、何かの問題を解決するのが基本ですよ。どういう問題かは、フィールドがそれぞれあるけどね。SEとかいうのは、ようするに政治問題をシステム問題に変換かけるプロなわけで、ただ、そういう人が必要な仕事ではないんでしょう。
んで、アルゴリズムを知っているか知ってないかってのはあるけど、知らなくても、解くだけなら解けるよね。最善じゃなくても。そういう頭はどうしたってプログラマなら必須ですよ。そうじゃないなら、どういう仕事をしているかは謎です。
1時間悩んだバグとは?
ということで、まぁイメージどおりにバックトラックのコード書いていったのです。がなんか動かずw。どこにひっかかっていたかというと、答えは、answer= hisotry;こういうの書いてたんですね。アレイを全部コピーしてもつつもり(頭の中では)書いちゃってたんだけど、現実には、ずっとhistoryを保持しっぱなさいという。ということで、cloneつけたら思った動作になりました。