introduction
Aux fins de ce défi, nous définirons les voisins d'un élément dans une matrice carrée (telle que ) comme toutes les entrées de qui sont immédiatement adjacentes en diagonale, horizontalement ou verticalement à (c'est-à-dire qu'ils "entourent" , sans s'enrouler).E
Pour les pédants, une définition formelle des voisins de pour un matix est (0-indexée): où
Disons que l'élément d'index vit en hostilité s'il est coprime avec tous ses voisins (c'est-à-dire, ). Malheureusement, cette pauvre entrée ne peut même pas emprunter une tasse de sucre à ses résidents grossiers à proximité ...
Tâche
Assez d'histoires: étant donné une matrice carrée d'entiers positifs, sortez l'un des éléments suivants:
- Une liste plate d'éléments (dédupliqués ou non) indiquant toutes les entrées qui occupent certains indices dans tels que les voisins sont hostiles.
- Une matrice booléenne avec s aux positions où les voisins sont hostiles et sinon (vous pouvez choisir n'importe quelle autre valeur cohérente à la place de et ).
- La liste des paires d'indices qui représentent des quartiers hostiles.
Implémentation de référence dans Physica - prend également en charge la syntaxe Python pour les E / S. Vous pouvez prendre des entrées et fournir des sorties par n'importe quelle méthode standard et dans n'importe quel format raisonnable, tout en prenant note que ces failles sont interdites par défaut. C'est du code-golf, donc le code le plus court en octets (dans toutes les langues) gagne!
De plus, vous pouvez également prendre la taille de la matrice en entrée et prendre la matrice comme une liste plate car elle sera toujours carrée.
Exemple
Considérez la matrice suivante:
Les voisins correspondants de chaque élément sont:
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
Et donc la sortie doit être l'une des suivantes:
{27; 53}
{{0; 0; 0}; {1; 0; 0}; {1; 0; 0}}
{(1; 0); (2; 0)}
Cas de test
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)]