白黒判定

息子(中3)の数学の問題集から、テーマを拝借してみた。
f:id:Infoment:20201203232218p:plain

設問では、白黒黒の繰り返しで、階段状に〇を並べている。
f:id:Infoment:20201203232517p:plain

最初は、例えばm段目n個目の色を求める式を立ててしまえば簡単では?
と考えたが、上手く行かなかった。なぜなら、例えばnという数字が3の
倍数であるかいなか、判断がつかないからだ。
※3で割り切れるかどうか、を現わしきれない。

そこで、白黒を求めるユーザー定義関数を作成してみた。

Function 白黒判定(m As Long, n As Long) As String
    ' m-1段目までの丸の合計を求める。
    Dim 丸の数 As Long
        丸の数 = m * (m - 1) / 2
    ' これにm段目の指定数(n個)を加える。
        丸の数 = 丸の数 + n
    
    ' 3で割った時の余りの数で、白黒判定。
        Select Case 丸の数 Mod 3
            Case 1
                白黒判定 = "白"
            Case Else
                白黒判定 = "黒"
        End Select
End Function

これなら、1234段目の567個目が黒であることも、簡単に求められる。
f:id:Infoment:20201203233109p:plain

あとは、如何にして試験会場にExcelを持ち込むか(※)だな。
※決して持ち込んではいけません。

参考まで。