Ich habe n*n
grid, wo zB n=10
. Ich muss es mit Schwarz-Weiß-Elementen füllen. Jedes schwarze Element muss einen, zwei oder drei schwarze Nachbarn haben. Es ist nicht erlaubt, schwarze Elemente mit vier oder null Nachbarn zu enthalten.
Wie soll ich diese Art von Gitter erstellen?
Bearbeiten:
Genauer gesagt ist es ein zweidimensionales Array, das zum Beispiel mit zwei for
-Schleifen erstellt wurde:
Dieser Pseudocode baut etwas wie folgt auf:
Und was ich erwarte ist:
Offensichtlich versucht man, "schwarze Pfad" -Formen auf einem Schreibraster zu erzeugen.
Also lass es uns einfach machen.
Vielleicht könnte dieser Python-Code nützlich sein. Die Grundidee besteht darin, zunächst eine Art Querdurchlauf des Gitters durchzuführen, wobei sichergestellt wird, dass die geschwärzten Pixel die Beschränkung respektieren, dass sie nicht mehr als drei schwarze Nachbarn haben. Das Diagramm, das dem geschwärzten Teil des Gitters entspricht, ist ein Baum, wie es Ihr gewünschtes Ergebnis zu sein scheint.
%Vor% Hier ist eine Ergebniseinstellung size = 50
und eine weitere Einstellung size = 1000
Sie können auch mit der Wurzel des Baumes spielen.
Mit der Größe, die Sie hier zeigen, können Sie leicht auf eine Brute-Force-Implementierung zurückgreifen.
Schreiben Sie eine Funktion, die überprüft, ob Sie die Anforderungen erfüllen, indem Sie einfach alle Zellen durchlaufen und Nachbarn zählen.
Danach tun Sie etwas wie folgt:
%Vor%Wenn Ihr Raster groß ist (Tausende von Pixeln), sollten Sie wahrscheinlich nach einem effizienteren Algorithmus suchen, aber für ein 10x10 Raster wird dies blitzschnell berechnet.
Tags und Links algorithm multidimensional-array