Codeへの愛とCuriosity

CodeIQ への出題・解説解題・その周辺について、思いつくままに。

過去問の振り返り #50〜#59

50.撤去作業の果てに現れる数列

問題と解説が
プログラム解説:CodeIQ「撤去作業の果てに現れる数列」
にあるものの、

私のコードはきちんとしていません。

とあるとおり、ちょっと残念な実装。

これは オフラインリアルタイムどう書くで出した
多段階選抜 2014.8.2 問題
を改変したもの。素数が出てくるけど、ruby なら prime を使っていいよということで素数判定を書いてほしいと思っているわけではなかった。

実装にあたっては、ruby の場合は lazy を使えば簡単に書ける。
遅延評価がない言語だと面倒だけど。

51.ちょっと奇妙な足すと引く

問題と解説が
プログラム解説:CodeIQ「ちょっと奇妙な足すと引く」
にある。

コンピュータサイエンスっぽい問題だけど、雑に書いてもなんとかなる感じ。
CodeIQ の中の人に送ったサンプル実装は 20行足らずだった。

52.ダブルテトロミノ

問題と解説が
プログラム解説:CodeIQ「ダブルテトロミノ」
にある。

オフラインリアルタイムどう書くに出した
テトロミノ認識〜 横へな 2012.10.6
をちょっと面倒にした問題。とはいえ、総当たりしてしまえば良いので全然難しくはない。

53.ぐるぐるスクエア

問題と解説が
プログラム解説:CodeIQ「ぐるぐるスクエア」
にある。

次の問題ぐるぐるペンタゴンの小手慣らし的な問題だと思います。

とある通り。
上記のリンク先では地図を作っているけど、算術的に解くのが自然だと思う。

入力は、1以上、1000以下です。

という不要な制限も、ぐるぐるペンタゴンに合わせたものである。

54.ぐるぐるペンタゴン

こちらが本命。

問題と解説が
プログラム解説:CodeIQ「ぐるぐるペンタゴン」
にある。

前の問題ぐるぐるスクエアと比べるとクソ難しいです。

というありがたい言葉を頂いた。

解説については
「ぐるぐるスクエア」「ぐるぐるペンタゴン」問題解答 ( CodeIQ ) - ange1のブログ
を見ていただくのがいいと思う。私もなんか書いたほうがいい?

指摘の通り、五角形の世界であなたは過去の自分に出会う 横へな2016.10.30 問題 が元ネタ。五角形は楽しいね。

あと。図を書くのが大変だった。
五角形を敷き詰めるのは別に大変じゃないんだけど、欠けないように数字を入れるのが大変だった。

55.外周の折り目


によると、「ぐるぐるペンタゴン」と並ぶ難問だったらしい。

問題と解説が
プログラム解説:CodeIQ「外周の折り目」
にある。

何を書かなければならないのかを把握するのに難儀するけど、わかってしまえばわりとあっさり書ける問題。
のつもり。

56.放物線とマス目の関係

問題と解説を
放物線とマス目の関係 の解説
に置いた。

見た目が簡単そうだけど、見た目ほどは簡単じゃない問題だったようで、正解率がすごく低かった。

プログラム解説:CodeIQ「放物線とマス目の関係」

浮動小数点を使わずに交点の有無をうまく判断できる方法があるのでしょうか?

とあるが、平方根を取る必要がないので有理数 を使えば浮動小数点を避けられる。

57.縦線と横線でマス目を塗る

問題と解説が
プログラム解説:CodeIQ「縦線と横線でマス目を塗る」
にある。

競技プログラミングっぽい問題のつもりなんだけど、私自身は競技プログラミングの経験がないので的はずれかもしれない。どう?

いろいろな解き方がある良い問題だったと感じている。

58.境界線の長さ

問題と解説が
プログラム解説:CodeIQ「境界線の長さ」
にある。

えらく素直な問題でした。
何か引っ掛けがあるのかな、と思いましたが何もありませんでした。

とあるとおり、素直な問題。

オフラインリアルタイムどう書くの
三種類の境界線 横へな 2014.10.4 問題

境界線分 〜 横へな 2013.12.7
を混ぜた問題。

59.周期表

問題と解説が
プログラム解説:CodeIQ「周期表」
にある。

私が CodeIQ に出した問題で一番簡単だったと思う。
見どころは、周期表ソースコード上で同表現するか。
表をハードコードするならするとして、どうハードコードするかが悩みどころ。

ゴルフをするのも楽しいかもね。

今日のところは

今日のところはこれぐらいで。
私の手による解説解題を希望の方は、このブログか Twitter:@Nabetani にコメントか何かください。対応するかもしれません。