前書き
この課題の目的のために、私たちが定義する隣人の要素の正方行列で(ように)のエントリがすべてのように に水平または垂直、斜めにすぐ隣接している(すなわちそれらはラップせずにを「囲みます」)。E E
pedantsのための近隣の、正式な定義のため matix(0インデックス)である: ここで n×nA N i 、E i 、
インデックスの要素が、そのすべての隣接要素と互いに素である場合(つまり、あれば、敵意を持って生きているとしましょう)。悲しいことに、この貧弱な入り口は、近くの失礼な住民から砂糖を1杯も借りることができません...
仕事
十分なストーリー:正の整数の正方行列が与えられると、次のいずれかを出力します。
- 隣接するが敵対的になるようにいくつかのインデックスを占めるすべてのエントリを示す要素(重複排除されているかどうかにかかわらず)のフラットリスト。M N i 、
- 近傍が敵対的である位置に秒、それ以外の場合は秒のブール行列(と代わりに他の一貫した値を選択できます)。0 0 1
- 敵対的な地域を表すインデックスのペアのリスト。
Physicaのリファレンス実装 – I / OのPython構文もサポートします。これらの抜け穴はデフォルトで禁止されていることに注意しながら、標準的な方法と適切な形式で入力を取得し、出力を提供できます。これはコードゴルフなので、(すべての言語で)バイト単位の最短コードが優先されます!
さらに、行列サイズを入力として使用することもできます。また、常に正方形であるため、行列をフラットリストとして使用することもできます。
例
次のマトリックスを考えてみましょう:
各要素の対応する近傍は次のとおりです。
i j – E -> Neighbours | All coprime to E?
|
0 0 – 64 -> {10; 27; 22} | False
0 1 – 10 -> {64; 14; 27; 22; 32} | False
0 2 – 14 -> {10; 22; 32} | False
1 0 – 27 -> {64; 10; 22; 53; 58} | True
1 1 – 22 -> {64; 10; 14; 27; 32; 53; 58; 36} | False
1 2 – 32 -> {10; 14; 22; 58; 36} | False
2 0 – 53 -> {27; 22; 58} | True
2 1 – 58 -> {27; 22; 32; 53; 36} | False
2 2 – 36 -> {22; 32; 58} | False
したがって、出力は次のいずれかである必要があります。
{27; 53}
{{0; 0; 0}; {1; 0; 0}; {1; 0; 0}}
{(1; 0); (2; 0)}
テストケース
Input –> Version 1 | Version 2 | Version 3
[[36, 94], [24, 69]] ->
[]
[[0, 0], [0, 0]]
[]
[[38, 77, 11], [17, 51, 32], [66, 78, 19]] –>
[38, 19]
[[1, 0, 0], [0, 0, 0], [0, 0, 1]]
[(0, 0), (2, 2)]
[[64, 10, 14], [27, 22, 32], [53, 58, 36]] ->
[27, 53]
[[0, 0, 0], [1, 0, 0], [1, 0, 0]]
[(1, 0), (2, 0)]
[[9, 9, 9], [9, 3, 9], [9, 9, 9]] ->
[]
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
[]
[[1, 1, 1], [1, 1, 1], [1, 1, 1]] ->
[1, 1, 1, 1, 1, 1, 1, 1, 1] or [1]
[[1, 1, 1], [1, 1, 1], [1, 1, 1]]
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
[[35, 85, 30, 71], [10, 54, 55, 73], [80, 78, 47, 2], [33, 68, 62, 29]] ->
[71, 73, 47, 29]
[[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]
[(0, 3), (1, 3), (2, 2), (3, 3)]