Einführung
Für die Zwecke dieser Herausforderung definieren wir die Nachbarn eines Elements in einer quadratischen Matrix (so dass ) als alle Einträge von , die unmittelbar diagonal, horizontal oder vertikal an angrenzen (dh sie "umgeben" , ohne sich zu wickeln).
Für Pedanten eine formale Definition der Nachbarn von für eineMatixist (0-indiziert):
Nehmen wir an, das Element am Index lebt in Feindseligkeit, wenn es allen seinen Nachbarn gemeinsam ist ). Leider kann dieser arme Eingang nicht einmal eine Tasse Zucker von seinen unhöflichen Anwohnern in der Nähe ausleihen ...
Aufgabe
Genug Geschichten: Geben Sie bei einer quadratischen Matrix positiver Ganzzahlen eine der folgenden Optionen aus:
- Eine flache Liste von Elementen (dedupliziert oder nicht), die alle Einträge angeben, die einige Indizes in belegen so dass die Nachbarn feindlich sind.M N i ,
- Eine boolesche Matrix mit s an Positionen, an denen die Nachbarn feindlich eingestellt sind, und ansonsten (Sie können anstelle von und andere konsistente Werte wählen ).0 0 1
- Die Liste der Indexpaare , die feindliche Nachbarschaften darstellen.
Referenzimplementierung in Physica - unterstützt die Python- Syntax auch für E / A. Sie können Eingaben und Ausgaben über jede Standardmethode und in jedem vernünftigen Format vornehmen, wobei zu beachten ist, dass diese Lücken standardmäßig verboten sind. Dies ist Code-Golf, also gewinnt der kürzeste Code in Bytes (in jeder Sprache)!
Darüber hinaus können Sie auch die Matrixgröße als Eingabe und zusätzlich die Matrix als flache Liste verwenden, da sie immer quadratisch ist.
Beispiel
Betrachten Sie die folgende Matrix:
Die entsprechenden Nachbarn jedes Elements sind:
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
Und daher muss die Ausgabe eine der folgenden sein:
{27; 53}
{{0; 0; 0}; {1; 0; 0}; {1; 0; 0}}
{(1; 0); (2; 0)}
Testfälle
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)]