5 | 7 | 11 | 13 |
---|---|---|---|
101 | 103 | 107 | 109 |
191 | 193 | 197 | 199 |
821 | 823 | 827 | 829 |
上の4*4正方行列は、互いに行列が異なる、4つのマスのどの合計値も、1134となる。
例:
5+103+197+829=1134
101+7+827+199=1134
「互いに行列が異なる、4つのマスのどの合計値も、同一の値となる」計算が成立する4次正方行列を、本問では「4クイーン方陣」と呼ぶ。
- 16個の数値を引数にとり、4クイーン方陣であるかどうかを判定するメソッドisFourQueensSquare(int v1,int v2...v16):booleanを作成せよ。メソッドは、4クイーン方陣であればtrueを返し、4クイーン方陣でなければfalseを返すものとする。
- 4*4の配列を引数にとり、4クイーン方陣であるかどうかを判定するメソッドisFourQueensSquare(int v[][]):booleanを作成せよ。
- 互いに異なる16個の素数からなる4クイーン方陣を生成するメソッドcreateFourQueensSquare(int min):int[][]を作成せよ。ここで、minは、4クイーン方陣を構成する素数の最小値を指定する値である。(min <= 素数の最小値)
おまけ。
4. 互いに異なる16個の素数からなる4クイーン方陣は無限に存在するか。証明せよ。
本来は、子供向け算数クイズだったらしいのですが、あえて新人研修のプログラミング問題っぽくしてみました。個人的な興味で「16個の数が全て違う素数」という縛りを入れたら思いついたのが上の方陣です。4つ子素数で構成しました。これより16マスの合計値が小さい素数4クイーン方陣を考えるとかすると、面白いかもしれません。