163.1

TCCCのためにSRMはしばらくお休みらしいので、過去問をひたすら解く日々が続きそう。

250

じゃんけんの相手のパターンが与えられるので、自分が特定のパターンで手を出す場合何勝できるかを答えよという問題。最初の二回はグーで、後は相手が二回同じのを出したら次も同じで、そうじゃない場合は出ていないのが出ると仮定した時に勝つように出す。


単純実装系なので、実装速度を競う問題。

500

15個のボールを与えられた条件を満たすように任意の2個の入れ替えを行う場合、最小の入れ替え回数を答えよという問題。8が真ん中の方にあって、8より小さいんのと8より大きいものが交互に並ぶように(若干違うけど)並べる。順番は逆でも良い。


単純に8の位置を調節して、残りの数字をパターンに埋める。0〜7まで整合している数が決まるので、0の場合は逆順だと思うようにする、などやればおしまい。これは250点問題でもおかしくないと思う。

1000

ISOのカレンダー規格から、与えられた日付が何週目か答えよという問題。


英語がとにかく長い。ネイティブ以外はかなりロスするようにできている。一週間は月曜日から始まり、日曜日まで。ある年の最初の週は最初の木曜日から始まる。前の年や次の年に含まれることもある。


で、このままでやると面白くないと思ったらしく、ISOが3日間ずらすように規格変更を行った場合について答えよとのこと。バカにしてるとしか思えない...。


何も考えずにCalendarライブラリを使って、3日分修正。1582年の例外処理については何も語っておらず、一言使用する暦に従えってことなんだろうか?1582年の時には1週間分増やすという処理をやったが、かなりアドホック。1752年がおかしいんだと思っていたけれど、どういう違いが具体的にあるのかは調べないと分からない。(暗記する必要すら感じない。)


多分今までに見た中で一番の悪問だと思う。やらないことをお勧めする。