Anzeige
Archiv - Navigation
1396to1400
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Wegeproblem mit VBA lösen

Wegeproblem mit VBA lösen
07.12.2014 00:32:33
Uppe
Hallo Experten,
ich habe ein Spielfeld der Größe 10x15 Felder.
Feld 1/1 ist das Startfeld, Feld 2/1 (rechts neben den Startfeld) ist das Zielfeld. Einige Felder verteilt über das Spielfeld (Koordinaten bekannt) sind nicht begehbar und ich möchte einen Weg finden, der alle begehbaren Felder nutzt und von Start zu Ziel führt.
Kann man das in VBA programmieren? Mir fehlt irgendwie die Idee.
Gruß Uppe

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
erste Idee = die bedingte Formatierung
07.12.2014 08:57:25
Matthias
Hallo
Kann man das in VBA programmieren? Mir fehlt irgendwie die Idee.
Prinzipiell: JA
Da das aber keine aussagekräftigen Bedingungen sind kann man auch keine allgemeine
Lösung anbieten.
Versuche z.B. die bedingte Formatierung so zu setzen das Du ein Ausschlußprinzip hast.
Also färbe die nicht begehbaren Zellen z.B. grau.
Somit ist schon mal visuell erkennbar, ob es überhaupt einen Weg von Start zum Ziel gibt.
Um sich damit intensiver zu beschäftigen, kannst Du ja eine Bsp.Datei hochladen.
Da wären dann wenigstens 2 verschiedene Varianten des Spielfeldes mit unterschiedlichen
nicht begehbaren Zellen sinnvoll.
Es wäre ja z.B. auch denkbar das es verschiedene Wege gibt.
Willst Du dann alle Wege aufzeigen oder reicht nur der Hinweis das es einen mögl. Weg gibt?
Du müsstest also etwas konkreter in Deiner Bitte um Hilfe sein.
Gruß Matthias

Anzeige
AW: erste Idee = die bedingte Formatierung
07.12.2014 19:57:56
Uppe
Hallo Matthias,
mir reicht ein Weg :-) Aber von Hand finde ich nur einen Weg, bei dem 2 Felder gar nicht begangen werden.
Ich habe mal ein Spielfeld hochgeladen. Es soll ein Weg von A nach Z gefunden und dabei jedes Feld (außer den schwarzen) einmal begangen werden.
Userbild
Gruß Uppe

Hatte ich falsch verstanden ...
07.12.2014 20:49:37
Matthias
Hallo
Sorry, hatte diesen Satz
Es soll ein Weg von A nach Z gefunden und dabei jedes Feld (außer den schwarzen) einmal begangen werden.
nicht wirklich wahrgenommen.
Ist mir ehrlich gesagt zu aufwendig und
es wird auch nicht immer einen Weg geben.
Ich lass die Frage offen. Viel Glück
Gruß Matthias

Anzeige
Das wird hart, denn du musst erst mal einen ...
08.12.2014 01:24:53
Luc:-?
…allgemeinen Algorhithmus entwickeln, Uppe,
mit dem ermittelt wdn kann, wann geradeaus (waagerecht oder senkrecht) gegangen wdn kann und wann der Weg sich schlängeln muss, um alle weißen Felder zu erwischen, an die man sonst nicht mehr herankommen würde. Dazu muss sicher ständig der Bewegungs­spielraum nach allen Seiten berechnet wdn. Beim Schlängeln benötigt man bspw immer eine gerade Anzahl von Spalten bzw Zeilen, um eine Zelle weiter auf den ursprüng­lichen Weg zu kommen, bei ungerader Anzahl landet man woanders. Ist das der Fall, kann ggf mäan­drierende Fortbewegung helfen. Und da das Ziel neben dem Start liegt, scheidet eine Form spiraliger Bewegung aus.
Das ist eigentlich nur etwas für Enthusiasten solcher Aufgaben und ggf Pgmierer von PathFinder-Software in der Robotik (für autonome bewegliche Systeme). Also wirst du wohl selber ran müssen… ;-)
Gruß, Luc :-?

Anzeige
AW: Wegeproblem mit VBA lösen
09.12.2014 15:59:43
ChrisL
Hi Uppe
Ich konnte es nicht lassen und habe mal etwas rumgespielt. Siehe Beispieldatei:
https://www.herber.de/bbs/user/94314.xlsm
Das Prinzip ist, dass nach dem Zufallsprinzip Wege eingeschlagen werden, bis es keine weiteren Optionen mehr gibt. Im Bereich AG1:AU10 ist der Lösungsweg mit den wenigsten leeren Feldern angezeigt. Sobald dort alles voll ist, hast du die Lösung.
Die richtige Lösung zu finden ist wie ein 6er im Lotto, da keine Logik eingebaut ist (reiner Zufall). Eine Kaffee-Pause hat nicht gereicht, aber wer weiss, vielleicht hast du ja Glück wenn du das Programm mal ein paar Stunden laufen lässt ;)
Der Weg bis Feld 5 habe ich in der Ausgangslage vordefiniert, da dies aufgrund der Aufgabenstellung m.E. gegeben ist.
n.b. Das Programm berücksichtigt keine diagonalen und keine doppelten Wege. Falls dies auch erlaubt wäre, bitte um Mitteilung.
Viel Spass, cu
Chris
Sub MachmalEinPaarDurchlaeufe()
Do
Call ZufallsgeneratorStarten
Loop
End Sub
Private Sub ZufallsgeneratorStarten()
Dim WS1 As Worksheet, WS2 As Worksheet
Dim arAktuellePosition(2) As Variant ' 0=Zeile, 1=Spalte, 2=Nummer
Set WS1 = Worksheets("Spiel")
Set WS2 = Worksheets("Hilfstabelle")
With WS1
' Ausgangslage wieder herstellen
.Range("AY4:AY10").ClearContents
.Range("A1:O10").Value = .Range("Q1:AE10").Value
.Range("A1") = 1
arAktuellePosition(0) = 4
arAktuellePosition(1) = 2
arAktuellePosition(2) = 5
Do
' Möglicher Weg in alle 4 Richtungen ermitteln und auf Hilfstabelle eintragen
WS2.Range("A2:C5").ClearContents
Call VierRichtungen(CInt(arAktuellePosition(0)) - 1, CInt(arAktuellePosition(1)))
Call VierRichtungen(CInt(arAktuellePosition(0)), CInt(arAktuellePosition(1)) - 1)
Call VierRichtungen(CInt(arAktuellePosition(0)) + 1, CInt(arAktuellePosition(1)))
Call VierRichtungen(CInt(arAktuellePosition(0)), CInt(arAktuellePosition(1)) + 1)
If WS2.Range("A2") = "" Then
' wenn es keinen neuen Weg gibt
If WorksheetFunction.CountBlank(.Range("A1:O10")) 
Private Sub VierRichtungen(neuZeile As Integer, neuSpalte As Integer)
Dim intZeile As Integer
If neuZeile > 0 And neuSpalte > 0 Then
If neuZeile 

Private Function checkFix(strKoordinaten As String) As Boolean
With Worksheets("Spiel")
If WorksheetFunction.CountIf(.Range("AX2:AX8"), strKoordinaten) > 0 Then
If strKoordinaten  .Range("AY10").End(xlUp).Offset(1, -1) Then Exit Function
End If
End With
checkFix = True
End Function

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige