令和2年度大学入試センター試験情報関係基礎の第2問を解いてみました。とても楽しい題材だと思います。せっかくなのでRubyを使って実際に動かしてみました。
center_exam_info2020_2.rb
実行の様子
性質1
性質1は、「順に指定する二つのマスが同じマスである場合、その結果は指定直前の盤面と同じになる」というものでした。実際に試してみると以下のようになり、5,6,6
と5
は確かに同じになりました。
$ ruby center_exam_info2020_2.rb 5,6,6 0 1 0 1 1 1 0 1 0 $ ruby center_exam_info2020_2.rb 5 0 1 0 1 1 1 0 1 0
性質2
性質2は、「順に指定する二つのマスの順序を逆にした場合、その結果は元の順序で指定した結果と同じになる」というものでした。実際に試してみると以下のようになり、5,6,6
と6,5,6
は確かに同じになりました。
$ ruby center_exam_info2020_2.rb 6,5,6 0 1 0 1 1 1 0 1 0
性質3
性質3は、「任意の盤面に対するマス列の結果は、そのマス列に奇数回含まれるすべてのマスをそれぞれ1回ずつ含むマス列の結果と同じになる」というものでした。以下のように確かに同じになりますね。
$ ruby center_exam_info2020_2.rb 4,3,8,2,3,4,2,5,3 0 0 1 1 0 0 1 0 1 $ ruby center_exam_info2020_2.rb 3,5,8 0 0 1 1 0 0 1 0 1
問2
初期状態からマス1,2,5を黒くするためには、マス列X,Y,Zを指定すればよく、実際に試してみると確かに目的の盤面を作成することができますね。
$ ruby center_exam_info2020_2.rb 1,3,6,7,8,5,7,8,9,2,4,5,6,8 1 1 0 0 1 0 0 0 0
このマス列は性質1から3までを利用すると1,2,3,4,8,9
と短くすることができます。実際に試してみると確かに同じになりました。
$ ruby center_exam_info2020_2.rb 1,2,3,4,8,9 1 1 0 0 1 0 0 0 0