せでぃのブログ

ブログ初心者おいどんのどうでもいい愚痴やどうでもいい愚痴やどうでもいいマメ知識などを披露するチラシの裏です。

paizaのメガネ問題解決

github.com
 せっかくの長期休暇なので、年賀状と履歴書を書きながらやってみた。あ、今回はJavaで挑戦してみました。
f:id:Sediment:20170104020136p:plain
これは泥臭い解き方になって面倒臭そうだなぁと事前に想像したよりもはるか手前で、ハマった。まずね、try-catchで、次にintstreamでハマった。そりゃそうだ、javaで問題解いたことないもんなww

私のメガネに対する考え方

 正直、泥臭いやり方だと思うので、もっとスマートな人のを参考にしようね。
イ、比較を開始するポイントは限定されている。
例えば、2x2で3x3の画像位置を調べる場合、2x2の1は、3x3の1,2,4,5しか動かないだろう。
f:id:Sediment:20170104001104p:plain
ロ、小さい正方形の1と合うかどうか、イで限定された範囲で検索する。1つ目のふるいですな。
ハ、ロで合致した場合、その場で答え合わせをして1つでも合わなかったら、ロに戻る。


 ロとハで関数を分けるとわかりやすい。また、大きい方の正方形は二次元配列で持っておいた方が操作しやすかった。
 もうちょっと時間があったら、ラムダ式とstreamで上手に書き直したかったんだけど。いつもながらひどいねw あとは、String型で1行保持したまんまで検索かければもっと簡単だったとは思うが、なんかその先に繋がらないというか、手抜き感があってあえてやりませんでした。
 ハの作業するたんびに、毎度毎度、配列渡すのは効率悪いよなぁと思いつつ、他に方法が思いつかなかった。
 あーあ、もう仕事始めだよ、世の中面倒クセェことばっかりだな。