Nehmen Sie einen 2D-Raumbereich, der in achsenausgerichtete quadratische Einheiten unterteilt ist, deren Zentren in ganzzahligen Intervallen ausgerichtet sind. Eine Kante wird als intern bezeichnet, wenn sie von zwei Elementen gemeinsam genutzt wird, andernfalls handelt es sich um eine externe Kante.
Ihr Ziel ist es, die minimale Anzahl benachbarter Elemente zu finden, die durchlaufen werden müssen, um eine Außenkante zu erreichen, die von der Mitte jedes Elements ausgeht, die als traversal distance
oder distance
kurz als bezeichnet wird. Sie dürfen nur eine Kante durchfahren (dh kein Eckenschneiden / Diagonalbewegung). Es ist zu beachten, dass "äußere Elemente" (Elemente mit mindestens einer äußeren Kante) 0
benachbarte Elemente überqueren müssen , um eine äußere Kante zu erreichen.
Eingang
Die Eingabe ist eine Liste nicht negativer ganzzahliger Paarkoordinaten, die die (x, y) der Mitte aller Elemente angeben. Es wird angenommen, dass es keine überlappenden Elemente gibt (dh ein x / y-Paar identifiziert ein Element eindeutig). Sie können nicht alles über das Element Eingabereihenfolge übernehmen.
Sie können den Ursprung der Eingabe an einen beliebigen Ort verschieben (z. B. 0,0 oder 1,1 usw.).
Sie können davon ausgehen, dass alle Eingabeelemente verbunden sind, oder mit anderen Worten, es ist möglich, mit Hilfe der obigen Regeln von einem Element zu einem anderen Element zu gelangen. Beachten Sie, dass dies nicht bedeutet, dass die 2D-Region einfach verbunden ist. es kann Löcher in sich haben.
Beispiel: Die folgende Eingabe ist ungültig.
0,0
2,0
Fehlerprüfung ist nicht erforderlich.
Die Eingabe kann aus einer beliebigen Quelle stammen (Datei, STDIO, Funktionsparameter usw.).
Ausgabe
Die Ausgabe sollte eine Liste von Koordinaten sein, die jedes Element identifizieren, und der entsprechende ganzzahlige Abstand, der durchlaufen wird, um zu einer Kante zu gelangen. Die Ausgabe kann in jeder gewünschten Elementreihenfolge erfolgen (z. B. müssen Sie die Elemente nicht in derselben Reihenfolge ausgeben, in der sie als Eingaben empfangen wurden).
Die Ausgabe kann an eine beliebige Quelle erfolgen (Datei, STDIO, Funktionsrückgabewert usw.).
Jede Ausgabe, die die Koordinate des Elements mit seiner Außenentfernung übereinstimmt, ist in Ordnung, z.
x,y: distance
...
[((x,y), distance), ...]
[(x,y,distance), ...]
Beispiele
Beispieltexteingaben erfolgen in der Form x,y
mit einem Element pro Zeile. Sie können dies gerne in ein bequemes Eingabeformat umformen (siehe Regeln für das Eingabeformat).
Textbeispielausgaben sind im Format x,y: distance
mit einem Element pro Zeile. Sie können dies auch gerne in ein bequemes Ausgabeformat umformen (siehe Regeln für das Ausgabeformat).
Bei grafischen Figuren ist die linke untere Grenze (0,0), und die Zahlen im Inneren geben die erwartete Mindeststrecke an, die zurückgelegt werden muss, um eine Außenkante zu erreichen. Beachten Sie, dass diese Zahlen nur zu Demonstrationszwecken dienen. Ihr Programm muss diese nicht ausgeben.
Beispiel 1
Eingang:
1,0
3,0
0,1
1,2
1,1
2,1
4,3
3,1
2,2
2,3
3,2
3,3
Ausgabe:
1,0: 0
3,0: 0
0,1: 0
1,2: 0
1,1: 1
2,1: 0
4,3: 0
3,1: 0
2,2: 1
2,3: 0
3,2: 0
3,3: 0
grafische Darstellung:
Beispiel 2
Eingang:
4,0
1,1
3,1
4,1
5,1
6,1
0,2
1,2
2,2
3,2
4,2
5,2
6,2
7,2
1,3
2,3
3,3
4,3
5,3
6,3
7,3
8,3
2,4
3,4
4,4
5,4
6,4
3,5
4,5
5,5
Ausgabe:
4,0: 0
1,1: 0
3,1: 0
4,1: 1
5,1: 0
6,1: 0
0,2: 0
1,2: 1
2,2: 0
3,2: 1
4,2: 2
5,2: 1
6,2: 1
7,2: 0
1,3: 0
2,3: 1
3,3: 2
4,3: 2
5,3: 2
6,3: 1
7,3: 0
8,3: 0
2,4: 0
3,4: 1
4,4: 1
5,4: 1
6,4: 0
3,5: 0
4,5: 0
5,5: 0
grafische Darstellung:
Beispiel 3
Eingang:
4,0
4,1
1,2
3,2
4,2
5,2
6,2
8,2
0,3
1,3
2,3
3,3
4,3
5,3
6,3
7,3
8,3
9,3
1,4
2,4
3,4
4,4
5,4
6,4
7,4
8,4
9,4
2,5
3,5
4,5
5,5
6,5
9,5
10,5
11,5
3,6
4,6
5,6
9,6
10,6
11,6
6,7
7,7
8,7
9,7
10,7
11,7
Ausgabe:
4,0: 0
4,1: 0
1,2: 0
3,2: 0
4,2: 1
5,2: 0
6,2: 0
8,2: 0
0,3: 0
1,3: 1
2,3: 0
3,3: 1
4,3: 2
5,3: 1
6,3: 1
7,3: 0
8,3: 1
9,3: 0
1,4: 0
2,4: 1
3,4: 2
4,4: 2
5,4: 2
6,4: 1
7,4: 0
8,4: 0
9,4: 0
2,5: 0
3,5: 1
4,5: 1
5,5: 1
6,5: 0
9,5: 0
10,5: 0
11,5: 0
3,6: 0
4,6: 0
5,6: 0
9,6: 0
10,6: 1
11,6: 0
6,7: 0
7,7: 0
8,7: 0
9,7: 0
10,7: 0
11,7: 0
grafische Darstellung:
Wertung
Das ist Code Golf. Kürzester Code in Bytes gewinnt. Es gelten Standardlücken. Alle anderen als die speziell zur Lösung dieses Problems entwickelten integrierten Funktionen sind zulässig.