Eingang:
Ein NxM
Raster oder eine mehrzeilige Zeichenfolge (oder ein anderes vernünftiges Eingabeformat), die nur druckbares ASCII (Unicode-Bereich [32,126]
) enthält.
Ausgabe:
Die Anzahl der gefundenen geschlossenen Polygone desselben Zeichens mit zwei Sonderregeln:
- Leerzeichen sind Platzhalter und können (mehrfach) für jedes Zeichen verwendet werden
o
,O
Und0
als geschlossene Polygone selbst gezählt
Herausforderungsregeln:
- (Anti-) Diagonale Verbindungen zwischen denselben Zeichen (oder Leerzeichen) werden eingeschlossen, um geschlossene Polygone zu bilden.
- Sie können nicht über andere Zeichen gehen (mit Ausnahme der Platzhalter). (Das heißt, im ersten Testfall / Beispiel unten können Sie nicht zwei Dreiecke mit den
A
's bilden, indem Sie über die gehenx
.) Daher sollten alle für ein geschlossenes Polygon verwendeten Zeichen (horizontal, vertikal und / oder (anti)) diagonal verbunden werden ). - Polygonen sind mindestens drei Zeichen ( mit Ausnahme der einzelnen Zeichen
o
,O
,0
). - Zeilen benachbarter Zeichen sind keine geschlossenen Polygone.
- Dieselben Zeichen können nicht für mehrere Polygone verwendet werden, ausgenommen Platzhalter.
- Wildcard Plätze können nicht als gezählt werden
o
,O
oder0
. - Drei oder mehr Leerzeichen allein können kein geschlossenes Polygon bilden. Es sollte immer mindestens ein Nicht-Leerzeichen (und kein
o
/O
/0
) Zeichen haben. - Die Eingabe kann in jedem vernünftigen Format erfolgen. Kann eine Zeichenmatrix, ein Trennzeichen für neue Zeilen, ein Zeichenfolgenarray, ein Zeichenarray mit zusätzlicher Ganzzahlbreite usw. sein.
- Die Eingaben sind immer ein N x M-Rechteck (oder Quadrat), also keine seltsamen Eingabeformen
- Da dieselben Zeichen nicht mehr als einmal verwendet werden können und wir so viele geschlossene Polygone haben möchten, ist die Verwendung mehrerer Zeichen zur Bildung von zwei (oder mehr) geschlossenen Polygonen anstelle eines größeren Polygons natürlich das beabsichtigte Ziel bei der Zählung (was auch der Fall ist) warum geschlossene Polygone gebildet durch
o
,O
oder0
nie gezählt werden, da sie bereits geschlossene Polygone sind einzeln). - Groß- und Kleinbuchstaben werden natürlich als einzelne Zeichen gezählt.
Allgemeine Regeln:
- Dies ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Lassen Sie sich nicht von Code-Golf-Sprachen davon abhalten, Antworten mit Nicht-Codegolf-Sprachen zu veröffentlichen. Versuchen Sie, eine möglichst kurze Antwort für "jede" Programmiersprache zu finden. - Für Ihre Antwort gelten Standardregeln mit Standard-E / A-Regeln . Sie können also STDIN / STDOUT, Funktionen / Methoden mit den richtigen Parametern und vollständige Programme vom Rückgabetyp verwenden. Ihr Anruf.
- Standardschlupflöcher sind verboten.
- Wenn möglich, fügen Sie bitte einen Link mit einem Test für Ihren Code (dh TIO ) hinzu.
- Es wird dringend empfohlen, eine Erklärung für Ihre Antwort hinzuzufügen.
Beispiele / Testfälle:
Eingang:
AAAw
AxA4
'AoQ
Ausgabe : 2
, weil diese Polygone gebildet werden können:
Eingang:
1822uaslkoo
12*2sl ljoo
a* 0a91)j$*
()*#J9dddj*
*Q#ID dJj!"
*UJD SO&*93
Ausgabe : 12
, weil diese Polygone gebildet werden können:
Beachten Sie
Folgendes : - Das gelbe unten ist kein Polygon, da die o
bereits als getrennte Polygone gezählt werden.
- Die violetten und braunen sind nicht geschlossen.
- Die roten, grauen, grünen und hellblauen verwenden ein oder mehrere Nicht- Polygone -Leerzeichen, die bereits für andere geschlossene Polygone verwendet wurden
Eingabe (Abmessungen sind 2x4
):
3 3
2
Ausgabe : 3
, weil diese Polygone gebildet werden können:
Eingang:
AAAA
AAAA
AAxA
Ausgabe : 3
, weil diese Polygone gebildet werden können:
Natürlich sind hier andere Polygone möglich, aber nicht mehr als 3. Hier ein weiteres gültiges Beispiel mit 3
Polygonen:
Eingang:
0QoO
Ausgabe : 3
, weil diese Polygone gebildet werden können:
Eingang:
W w
Ww
Ausgabe : 3
, weil diese Polygone gebildet werden können:
Beachten Sie, dass der Raum der obersten Ebene für alle drei Polygone verwendet wird. Hier sind die drei Polygone einzeln hervorgehoben:
Eingang:
W W
WW
Ausgabe : 3
, weil die gleichen drei Polygone wie im vorherigen Test gebildet werden können. Also nein, es ist nicht 2
mit diesen beiden Polygonen:
Eingang:
abcdQefg
hQiQjQQk
QlQmnopQ
QqrstQQu
QvQQQwxy
QQz0QQQQ
+1
aber ich sehe wirklich nicht, welches spezielle Gehäuse daso
s,O
s &0
s zur Herausforderung beiträgt.o
,O
,0
wobei Kreise als einzelne Polygone, sondern in einer Lösung ist es nicht viel hinzuzufügen, außer , dass dieo
,O
,0
sollten vermieden werden , wenn größere Polygone bilden, und das Hinzufügen von ihnen eine Zählung. Es ist jedoch zu spät, um es jetzt zu ändern.Antworten:
Python 2 , 714
737821BytesProbieren Sie es online aus!
Für jeden Buchstaben
A
(außero
,O
und0
) der Code build ein Diagramm , das die Nachbarschaft der verschiedenen Vorkommen von Buchstaben darstelltA
und Raum in der Anfang gegebenen Matrix. Anschließend wird die Menge der halbgetrennten Zyklen berechnet, die den Graphen abdecken, wenn die Anzahl der Zyklen maximiert wird (die Trennung basiert nur auf dem BuchstabenA
, derselbe Raum kann für mehrere Zyklen verwendet werden).Der Code besteht alle Tests.
Eingabe: Die Liste der Zeilen der Matrix.
quelle