Makro für Excel / Spielfeld wie bei "Noch mal"
#21
Hallöchen,

Zitat:(Auch im Originalbild haben nicht alle Spalten 5 Farben.)

Hatte ich anfangs auch gedacht, siehe mein Bild... Also, ich habe jetzt nochmal und nochmal drüber geschaut, ich sehe überall 5. (Bild in #1) Orange ist etwas tricky, wenn Sterne drauf liegen.

Bei anderen Tafeln, die ich bis jetzt gesehen habe, waren ebenfalls in jeder Spalte alle Farben enthalten. Falls das so ist, wäre die maximale Höhe 3 Felder.
Meine "Beobachtung" kann aber auch rein zufällig sein.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#22
Hallo
Zitat:Da ich leider gesundheitlich sehr angeschlagen bin, komme ich zur Zeit nicht dazu eure Vorschläge zu testen oder umzusetzen.
Da wäre mangelndes Interesse doch schöner gewesen. Gute Besserung.

Hier mal die umgebaute Version. Denke die könnte auch in älteren Excel laufen.
Ich habe mal noch die 6er Reihen(xxxxxx) raus genommen.
In den Proben wurden Lösungen in 1 - 120s gefunden.
Einmal keine. Dann einfach neu VersuchenWink

Gruß Elex


Angehängte Dateien
.xlsm   Noch mal Spielfeld 15x7.xlsm (Größe: 51,09 KB / Downloads: 2)
Antworten Top
#23
Hallo T...,

Auch ich habe das Programm so umgestellt, dass jetzt in jeder Spalte 5 Farben sind.

Um die Zeiten ein wenig zu reduzieren habe ich die zufällige Zuordnung der Kettenlängen ein wenig angepasst.
A) Über den benannte Bereiche "MaxLS"  versuche ich möglichst frühzeitig Kettenlängen zu nutzen.
1. ZB sollen möglichst 3 Ketten der Länge 6 in den ersten 4-6  Spalten beginnen. Das ändert nichts da ansonsten 3 Ketten in den Spalten 9-11 enden (was gespiegelt das gleiche ist).
2. ZB sollen möglichst 3 Ketten der Länge 1 in den ersten 11-12 Spalten beginnen, damit sich am Ende nicht zuviele kurze Ketten ballen.
B) Über den benannte Bereiche "MinLS"  versuche ich möglichst Kettenlängen nicht zu früh einzusetzen.
ZB. Vor der 12.Spalte noch mindestens 2 Ketten der Längen 1 und 2 zu haben.

Trotzdem findet mein Algorithmus schneller eine gültige Lösung, wenn durch die Zufallsprozesse zu Beginn nicht zuviele kurze Ketten genutzt wurden. Das kann dazu führen, dass in der angezeigten Lösung zum Ende sehr viele kurze Ketten eingesetzt werden. In den Zellen J12:J41 wird angezeigt in welcher Spalte die jeweilige Kette beginnt.
Ich habe hier kein zusätzliches Auswahlkriterium eingebaut, da du selbst entscheiden kannst wann dir das Muster noch gefällt.

@Elex
Ich weis nicht wie zeitlich aufwendig deine Prüfung, ob eine benachbarte Zelle die gleiche Farbe hat aber zu einer anderen Kette gehört, ist. Sie muss aber sehr häufig durchgeführt werden.
Da du nach meinem Verständnis auch keine zwei Ketten der gleichen Farbe in einer Spalte zulässt und die Spalten von links nach rechts füllst, reicht es doch nur die linke benachbarte Zelle und nur wenn ich in der Startspalte der aktuellen Kette bin zu prüfen.


Angehängte Dateien
.xlsm   NochMal06.xlsm (Größe: 84,04 KB / Downloads: 3)
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Antworten Top
#24
Hi @Ego

Zitat:die Spalten von links nach rechts füllst.
Ja und nein.

z.B. kann A1=1 -> A2,B2=2 sein. Jetzt hat die nächste Kette(Start A3) und alle Varianten für Ende offen. Auch Ende in B2. Somit Wachsen auch nach links möglich.
Code:
____|A|B|C|
   1|1|3|3|
   2|2|2|3|
   3|3|3|3|

Zitat:nur die linke benachbarte Zelle und nur wenn ich in der Startspalte der aktuellen Kette bin zu prüfen

Leider ist die Prüfung in alle Richtungen nötig.
A1 füllt zufällig bis D2
A2 bis B4
A3 macht bis A4 und B3
A5 als einer bleibt.
A6 kann jetzt 1, 2, 3, 5 als Startfarbe haben.
Bei A6 könnten 1, 2, 3 aber nur noch nach rechts, weil A7 dann 5 sein muss.
Ab B6 kann dann 1, 3 nach oben oder unten. 2 kann nur nach unten wachsen.
Code:
____|A|B|C|D|
   1|1|1|1|1|
   2|2|2|2|1|
   3|3|3|2| |
   4|3|2|2| |
   5|4| | | |
   6|
   7|

Gruß Elex
Antworten Top
#25
Hallo Elex,

sorry, da habe ich nicht genau hingeschaut.
Die Aussage "keine zwei Ketten der gleichen Farbe in einer Spalte" ist für deine Lösung nicht richtig, daher vergiss meine Bemerkung.
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Antworten Top
#26
Wenn ich meinen Code nicht gleich so kommentiert hätte, würde ich wohl auch nicht mehr wissen was da wie läuft. ;-)
Schön dass du es Dir angesehen hast. Mich in deinen Ansatz rein zu denken werde ich wohl vorerst lassen. Evtl. mal wenn viel Zeit ist.

Gruß Elex
Antworten Top
#27
Hallo Kollegen

ich bewunder eure Fähigkeit da noch was zu programmieren!
"Dat is mor zu hu" Das ist mir zu hoch. Toll das ihr es schafft. Hut ab ....

mfg Gast 122
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste