Während wir uns auf einem dreieckigen Gitterkick befinden , möchte ich darauf hinweisen, dass es auf einem dreieckigen Gitter ein Äquivalent zu Polyominoes gibt . Sie werden Polyiamanten genannt und sind Formen, die durch Zusammenkleben gleichseitiger Dreiecke entlang ihrer Kanten gebildet werden. In dieser Herausforderung werden Sie entscheiden, welche Teilmengen eines Dreiecksgitters Polyiamanten sind und ob sie Löcher aufweisen. Da nur 9 Dreiecke erforderlich sind, um einen Polyiamanten mit einem Loch darin zu erstellen, muss Ihr Code so kurz wie möglich sein.
Das Gitter
Wir werden Martins dreieckiges Gitterlayout für die Eingabe verwenden:
Achten Sie darauf, dass die Zentren der Dreiecke ein ungefähr rechteckiges Gitter bilden und das obere linke Dreieck nach oben "zeigt". Wir können dann eine Teilmenge dieses Gitters beschreiben, indem wir eine rechteckige "Sternenkarte" angeben, die angibt, welche Dreiecke enthalten sind und welche nicht. Zum Beispiel diese Karte:
** **
*****
entspricht dem kleinsten Polyiamanten, der ein Loch enthält:
Löcher
Ein Polyiamant, der ein Loch wie im obigen Beispiel enthält (eine Region, die nicht Teil des Polyiamanten ist und allseitig von Regionen umgeben ist ), ist topologisch nicht einfach verbunden .
Die Herausforderung
Schreiben Sie eine Funktion oder ein Programm, das wie oben beschrieben eine "Sternenkarte" als Eingabe verwendet und genau dann eine Wahrheit ausgibt, wenn die angegebene Teilmenge des Dreiecksgitters ein einfach verbundener Polyiamant ist .
Mehr Beispiele
*** ***
*******
entspricht dem Polyiamanten
das ist einfach verbunden.
* *
** **
***
entspricht dem Polyiamanten
das ist einfach verbunden.
** **
*** **
****
entspricht dem Nicht- Polyiamanten
das würde nicht einfach selbst angeschlossen werden , wenn es war ein polyiamond.
Eingabespezifikation
- Die Eingabe besteht nur aus Sternchen, Leerzeichen und Zeilenvorschüben.
- Das erste Zeichen der Eingabe ist immer ein Leerzeichen oder ein Sternchen (entsprechend dem nach oben zeigenden Dreieck in der oberen linken Ecke des Rasters).
- In der ersten und letzten Zeile befindet sich immer mindestens ein Sternchen.
- Es gibt KEINE Garantie dafür, dass Zeilen nach der ersten Zeile nicht leer sind. Zwei Zeilenvorschübe hintereinander können in einer legitimen Eingabe erscheinen.
- Die Leitungslängen müssen nicht alle gleich sein.
Gewinnbedingung
Dies ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Testfälle
Wahrheitskarten:
1) *
2) *
*
3) **
4) *** ***
*******
5) * *
** **
***
6) *
**
*
7) **
***
****
8) ****
** *
*****
9) ***********
** ** **
**** ** **
**
************
Falsche Karten:
1) *
*
*
2) * *
3) *
*
4) **
**
5) ***
***
6) ** **
*****
7) ** **
*** **
****
8) *
*
9) *****
** *
*****
AV VA\nVAVAV
anstatt dass dies die** **\n*****
Visualisierung für einen Menschen erleichtert. Ich habe bereits eines von Martins ASCII-Diagrammen bearbeitet.