すがブロ

sugamasaoのhatenablogだよ

やねう企画2005年度入社試験の一部が明らかに(4)

 メールを送った。
結局設問が3問あるうち、
問1
問2(再帰版)
のみしかできなかった。
問2の非再帰版はなんとか解きたかったんだけどな……。

 とにもかくにも採点が楽しみ。

追記:多分、解いた2問にしようした時間は1時間ちょっとだと思う。多くても1時間30分程度。
その後非再帰版をウンウンうなっていたんだけど、どうにもならんし、メールを送ってしまった。

追記2:
http://d.hatena.ne.jp/yaneurao/20051002#p1
やね師匠のブログで

他には

ほげほげ(a(x+1,y )),
ほげほげ(a(x-1,y )),
ほげほげ(a(x ,y+1)),
ほげほげ(a(x ,y-1)),

という順番が考えられるが、この場合、たとえば、(x,y)の3×3近傍を列挙するときに、このまま拡張したのでは、down countしている形になる。だから、数字は小さな値から列挙するのがセオリーだ。

 という文章があった。
これ、まさに送ったメールで使った書き方だった。
で、拡張した場合は down count しているというのがあまりよくわからなかったけれど、コメント欄のやね師匠のやりとりで

「メモリアクセスがx+1,x,x-1の順になって」まではそう。その結果、遅くかるかどうかはまた別問題ではあるのだけれど、典型的なforによるループのイデオム「for(int i=0;i

とあった。
なるほど。確かに二つ程度ならば気にならないけれど、3つ並ぶと down count っていうのはわかりにくい。
事実、配列の走査のときにプラスからマイナスへの移動っていうのは右下から左上に流れることになるから、こういった面でもわかりにくい。
なので、数字は小さい値から列挙しましょう、ということで。
これからはこの方法を使っていこう。

……これを会社でやって通用するのかは別問題だけどナ!(ひでぶ