Mit Dem Löser Arbeiten

Mit dem Löser arbeiten

siehe auch WolfLanguage
Der Löser ist geschaffen worden für die sehr beliebten "rechne - dir - den - nächsten - wegpunkt" Multicaches.
An einem Beispiel Cache möchte ich aufzeigen wie nützlich der Löser ist und wie man am besten mit diesem Umgeht:

Zuerst schau dir diesen Cache an: MCT1: Munich City Tour 1

Es ist eine schöne lange Tour mit 8 Wegpunkten und schön viel Rechnerei. Diese Art von Multis bereite ich meistens zu Hause vor.
Zum Start:
Ganz offensichtlich benötigt man 4 Variablen; also ganz einfach schreiben. Zwischen = und ; bleibt eine Lücke, die wir vor Ort ausfüllen werden. Am Start muss dann E ausgerechnet werden, daß wiederum zur Ermittlung von Punkt 1 benötigt wird.

A = ;
B = ;
C = ;
D = ;
E = C - D;
"Punkt 1 liegt bei:";
"N 48°.08.09" (E);
"E011°34." (A) (C) (E);


Zu Punkt 1:
#F = ;
#"Punkt 2 liegt bei:";
#"N 48°08." (A) (F) (F);
#"E011°34.43" (C);


Ich habe jede Zeile mit "#" begonnen. Der Löser ignoriert diese Zeilen. Nicht vergessen, wir sitzen zu Hause und bereiten den Cache vor...Hierdurch wird verhindert, dass der Löser ein Problem meldet, wenn wir am Start stehen und Punkt 1 errechnen lassen. Wenn ich dann an Punkt 1 angekommen bin, nehme ich die "#" raus, an Punkt 2 die "#" für Punkt 2, etc.

Zu Punkt 2:
#G = ;
#"Punkt 3 liegt bei:"
#"N 48°08." (A + D) (B) (C);
#"E011°34." (G – A) (A + D) (A + D);


Zu Punkt 3:
#H = ;
#I = ;
#"Punkt 4 liegt bei:"
#"N 48°08." (A + D) (A) (I);
#"E011°34." (C – B) (F) (H);


Zu Punkt 4:
#K = ;
#L = ;
#O = ;
#"Punkt 5 liegt bei:"
#"N 48°08." (D)"0" (A);
#"E011°34." (C – B) (B) (G – D);


Zu Punkt 5:
#M = ;
#"Punkt 6 liegt bei:"
#"N 48°08." (I) (F) (B);
#"E011°3M." (K – D) (K + A) (A);


Zu Punkt 6:
#N = ;
#"Punkt 7 liegt bei:";
#"N 48°0" (H)"." (F) (B) (I);
#"E011°3" (K)"." (L / M) (K+ D) (I);


Zu Punkt 7:
#O = ;
#"Der Schatz liegt bei:"
#"N 48° 0" (H)"." (O + 2) (N) (K);
#"E 11° 3" (K)"." (O - G) (H – B) (E);



Eingaben im Löser werden automatisch gespeichert.
Der ganze Code sieht also wie folgt aus:
A = ;
B = ;
C = ;
D = ;
E = C - D;
"Punkt 1 liegt bei:";
"N 48°.08.09" (E);
"E011°34." (A) (C) (E);

#F = ;
#"Punkt 2 liegt bei:";
#"N 48°08." (A) (F) (F);
#"E011°34.43" (C);

#G = ;
#"Punkt 3 liegt bei:"
#"N 48°08." (A + D) (B) (C);
#"E011°34." (G – A) (A + D) (A + D);

#H = ;
#I = ;
#"Punkt 4 liegt bei:"
#"N 48°08." (A + D) (A) (I);
#"E011°34." (C – B) (F) (H);

#K = ;
#L = ;
#O = ;
#"Punkt 5 liegt bei:"
#"N 48°08." (D)"0" (A);
#"E011°34." (C – B) (B) (G – D);

#M = ;
#"Punkt 6 liegt bei:"
#"N 48°08." (I) (F) (B);
#"E011°3M." (K – D) (K + A) (A);

#N = ;
#"Punkt 7 liegt bei:";
#"N 48°0" (H)"." (F) (B) (I);
#"E011°3" (K)"." (L / M) (K+ D) (I);

#O = ;
#"Der Schatz liegt bei:"
#"N 48° 0" (H)"." (O + 2) (N) (K);
#"E 11° 3" (K)"." (O - G) (H – B) (E);


Alternativlösung

Eine Alternativlösung, die im Feld weniger Tipparbeit erfordert, ist:

#Punkt 1
A = 
B = 
C = 
D = 
E = C - D
#Punkt 2
F = 
#Punkt 3
G = 
#Punkt 4
H = 
I = 
IF $01MFT3="" THEN
   $01MFT3="N 48 08.09"E " E011 34."A C E
   "Punkt 1 liegt bei " $01MFT3
   goto($01MFT3) # Nur wenn mit PDA navigiert wird
   STOP
ENDIF
IF $02MFT3="" THEN
   $02MFT3="N 48 08."A F F " E011 34.43"C
   "Punkt 2 liegt bei " $02MFT3
   #Goto weggelassen, sonst hier
   STOP
ENDIF
IF $03MFT3="" THEN
   $03MFT3="N 48 08."A+D B C " E011 34." G–A A+D A+D
   "Punkt 3 liegt bei " $03MFT3
   #Goto weggelassen, sonst hier
   STOP
ENDIF
IF $04MFT3="" THEN
   $04MFT3="N 48 08."A+D A I " E011°34."C–B F H
   "Punkt 4 liegt bei " $04MFT3
   #Goto weggelassen, sonst hier
   STOP
ENDIF
... und so weiter ...


Um mit dieser Alternativlösung zu arbeiten, sollten aber zuvor die Hilfswegpunkte (Addis) 01MFT3, 02MFT3, 03MFT3 usw. in der Detailansicht erzeugt werden, wenn sie (so wie bei diesem Cache) nicht bereits existieren.

Der Vorteil der Alternativlösung liegt darin, daß im Feld keine Kommentare entfernt werden müssen. Es reicht, jeweils die neuen Variablen A, B, C, D usw. mit Werten zu belegen und auf 'Rechne!' zu klicken.

Um die Sache noch einfacher zu machen, unterstützt CW die automatische Erzeugung eines Korsetts (=Skeleton) für solche Multis über den Löser-Befehl skeleton. So erzeugt
sk(7)
den Hauptteil des obigen Programms, in den nur mehr die Berechnungen eingefügt werden müssen. Dabei wird für jeden Addi-Wegpunkt ein IF erzeugt. Überzählige IFs (z.B. für Parkplätze) können ja leicht wieder gelöscht werden. Am Besten geht Erzeugen des Korsetts, wenn mann im Löser auf das Befehlefenster doppelt klickt und dann den sk Befehl eingibt.