• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Makros für Solver?

Engywuck

Geowizard
Da ja an anderer Stelle schon fleißig über den Solver diskutiert wird, wollte ich mal eine Idee in die Runde werfen, die den Komfort für erfahrene Solver-Nutzer erhöhen könnte:
Ich fände so etwas wie die Möglichkeit einer Makrodefinition im Solver lecker. Ich könnte mir das so vorstellen:
Man definiert ein Makro, dass im Grunde eine Zusammenfassung von Solvercode darstellt. Damit man auch was damit anfangen kann natürlich mit Argumentsubstitution.
Ok, Anwendungsfall: Ein Owner findet es super, die Werte für die Buchstabensummen so zu definieren: A=26, B=25, C=24... Die kann man auch berechnen mit length("Wort")*27-val("Wort"). Wenn dies jetzt überall in den Berechnungen verwendet wird, wo Buchstabensummen (eben hier die modifizierte) verwendet werden, wird es schnell unübersichtlich. Andererseits wäre es auch doof, für so abgefahrene Teile eigene Funktionen zu definieren. Daher definiert man hier ein Makro:
macrodef("xval", 1, "(length(%1)*27-val(%1)")
Das erste Argument gibt den Namen des Makros an, das zweite die Anzahl der Argumente, diese werden im Makro mit %1, %2, %3 etc. referenziert. Verwendet würde die Formel dann mit
xval("Wort")
was schon deutlich übersichtlicher aussieht. Andere Anwendungsfälle:
Wenn man hier viel Text zulässt, kann man auch komplexere häufiger wiederkehrende Aufgaben zusammenfassen. Sei WP ein Wegpunkt, so könnte z.B. der Codeabschnitt
goto(WP)
center(WP)
"Nächstes Ziel: "WP

ersetzt werden durch
deploy(WP)
Oder auch die Funktion zum berechnen der Einer-, Zehner oder Hunderter... Stelle einer Zahl:
macrodef("stelle", 2, "mid(reverse(%1),%2,1)")
macht aus
A=mid(reverse(X),2,1)
einfach
A=stelle(X,2)

Wer öfter den Solver befüllt (so wie ich), kann damit sicher was anfangen...

Gruß,
E.
 

MiK

Geoguru
Diese Beispiele würde man dann aber wohl gerne in jedem Cache zur Verfügung haben. Also schreibt man sie wohl eher nicht in den Solvercode eines Caches. Ich könnte mir dafür besser eine extra Datei vorstellen. Darin kann man dann auch besser eine mehrzeilige Syntax unterbringen.
 

Robin888

Geomaster
Da bin ich auch dafür.

Damit könnte sich vielleicht auch das Problem lösen lassen, die einzelnen Ziffern einer mehrstelligen Zahl einzelnen Variablen zuzuordnen.

Aber dazu wären erstmal Schleifen sehr hilftreich. 0:)

Robin(888)
 

Wutschkow

Geomaster
Makros bzw. selbstdefinierte Funktionen im Solver fände ich auch eine schöne Sache. Allerdings sollten sie dann auch unbedingt dauerhaft speicherbar sein.
Auf diese Weise wäre der Solver auch einfach um neue Funktionen erweiterbar (sofern diese sich aus der vorhandenen Funktionalität zusammensetzen lassen).

Wäre es aus organisatorischen und Performance-Gründen vielleicht sinnvoller, jedes Makro in einer eigenen Datei zu speichern (natürlich in einem eigenen Unterverzeichnis)? Ich denke, das würde die Verwaltung (für den Anwender) erleichtern und vielleicht auch den Zugriff flott halten, wenn die Makrobibliothek im Lauf der Zeit anwächst. Wenn alles in einer Datei steht ist ja womöglich eine Menge Text zu parsen, bis man bei der benötigten Funktion angelangt ist.
 

MiK

Geoguru
Also wenn man die Makros einmal einliest, geht es wohl schneller in einer Datei. Wenn man sie erst "on-the-fly" einlesen will, wären einzelne Dateien wohl schneller. Ich denke aber, der erste Weg wäre sinnvoller.
 
OP
Engywuck

Engywuck

Geowizard
Das werden ja keine Riesen-Dateien werden. Da empfiehlt sich eigentlich ein XML-Format, dann kann man es auch problemlos einlesen und die Struktur ist einigermaßen einfach. Die kann man dann beim Start (oder auch beim ersten Verwenden des Solvers) einlesen und für den Rest der Sitzung merken.

Gruß,
E.
 

pfeffer

Geowizard
alles in 1 Datei erscheint mir sinnvoll.
XML weniger: XML einzulesen ist recht aufwändig. Warum nicht einfach die von Dir beschriebene Syntax in die Datei schreiben?

Gruß,
Pfeffer.
 
OP
Engywuck

Engywuck

Geowizard
Wieso soll xml aufwendig sein? Einen Parser muss man selber schreiben, xml schenkt ihn Dir.

Gruß,
E.
 

MiK

Geoguru
Und da man die Makrodateien wohl von Hand schreiben wird, ist XML auch nicht das praktischste Format.
 
OP
Engywuck

Engywuck

Geowizard
Wutschkow schrieb:
Das "aufwändiger" bezog sich wohl mehr auf den Rechen- und Zeitaufwand beim Parsen.
Das halte ich für ein Gerücht. Zumindest so lange es nicht darum geht, hunderte kompletter Cachebeschreibungen einzulesen. Meine Vermutung wäre, dass das Aufbauen des Solver-Fensters mehr Zeit kostet, als das Einlesen und Verarbeiten der Datei.
MiK schrieb:
Und da man die Makrodateien wohl von Hand schreiben wird, ist XML auch nicht das praktischste Format.
Auch das will ich so nicht unbedingt unterschreiben. Je nach dem, wie der Parser geschrieben ist, ist er mehr oder weniger robust. Da kann dann ein Leerzeichen an der falschen Stelle schon den Tod bringen... Und wenn bereits eine passende Vorlage in der Datei vorhanden ist, sollte auch ein nicht-Programmierer in der Lage sein, per Copy & Paste einen Eintrag hinzuzufügen.

Aber ich komme mir hier schon wieder vor wie bei "Per Anhalter durch die Galaxis":
Douglas Adams schrieb:
»Und das Rad«, sagte der Kommandant, »wie steht's mit diesem Rad-Dingsbums? Das hört sich nach einem wahnsinnig interessanten Projekt an.«

»Ach«, sagte das Mädchen aus der Absatzpolitik, »tja, da haben wir noch ein paar Schwierigkeiten.« »Schwierigkeiten?« rief Ford. »Schwierigkeiten? Was soll das heißen, Schwierigkeiten? Das ist doch die absolut simpelste Konstruktion im ganzen Universum!« Die Absatzpolitikerin spießte ihn mit einem Blick auf. »Na schön, Herr Naseweis«, sagte sie, »wenn Sie so wahnsinnig klug sind, sagen Sie uns doch, welche Farbe es haben soll.«
Vielleicht sollte man sich erstmal darum kümmern, die Makrofunktion überhaupt zu implementieren. Das ist nämlich deutlich schwieriger. SKG weiß vermutlich am ehesten, ob und wie es geht.

Gruß,
E.

Edit: Zitat verbessert.
 

Robin888

Geomaster
Also aus Anwendersicht halte ich einzelne Dateien für praktischer. Die könnte man einfacher mit anderen Anwendern tauschen. (Wo es doch im Moment so sehr darum geht den Bediencomfort zu erhöhen.)

Es würde sicher auch reichen die benutzten Macros erst on-the-fly zu parsen. Ich benutze sicher nicht ständig die gesamte Bibliothek.
Außerdem klingt das so, als ob ich dann auch während des laufenden Betriebes Marcos ändern oder neu hinzufügen kann ohne zwischendurch den Solver (oder sogar den Cachewolf) zu schließen.

Im Rahmen des Bedienkomforts wäre es sicher auch am einfachsten die Macros plain zu schreiben, anstatt sich mit einer XML.Struktur herumschlagen zu müssen.

Aber wie gesagt: Das alles ist nur die Sicht eines Anwenders.

Robin(888)
 

Robin888

Geomaster
Hm. Mir kommt da grad noch eine verrückte Idee:
Man könnte zu seinen Multis Makros schreiben, die den Ablauf noch weiter vereinfachen!

Ich habe ja schon immer mit dem Gedanken gespielt ein Solver-Script zu meinen Multis anzubieten. Aber ein Makro hätte den Vorteil, daß alles technische unsichtbar bleibt.

Ich würde das Makro beispielsweise "GC1W7W1" nennen und mit zwei Argumenten versehen. Das erste Argument ist das vorgefundene Wort/Zahl und das zweite Argument ist (optional) die Nummer der Station.
Als Ergebnis kommen dann automatisch die neuen Koordinaten (incl. Goto versteht sich) sowie die Beschreibung der nächsten Station incl. Frage.

WherIgo light sozusagen. %-)

Robin(888)

(Mit verschlüsselten (binären) Makros könnte man noch weiter in diese Richtung denken, da man Informationen speichern könnte die man zu Beginn noch nicht haben soll. Welche Möglichkeiten... :-o)
 

greiol

Geoguru
Robin888 schrieb:
Aber ein Makro hätte den Vorteil, daß alles technische unsichtbar bleibt.
eben wolltest du es noch als plain datei ablegen ;)
Robin888 schrieb:
Ich würde das Makro beispielsweise "GC1W7W1" nennen und mit zwei Argumenten versehen. Das erste Argument ist das vorgefundene Wort/Zahl und das zweite Argument ist (optional) die Nummer der Station.
Als Ergebnis kommen dann automatisch die neuen Koordinaten (incl. Goto versteht sich) sowie die Beschreibung der nächsten Station incl. Frage.
das sprengt ein wenig den rahmen dessen was ich unter einem "macro" verstehe, aber die grenzen kann man natürlich weit fassen.
Robin888 schrieb:
WherIgo light sozusagen. %-)
zum einen kann ich das "light" nicht so recht erkennen, zum anderen dürfte "nur lösbar mit cachewolf bleeding edge" die zahl der potentiellen sucher doch recht stark einschränken.
 

pfeffer

Geowizard
Also verschlüsseln finde ich nicht so eine prikkelnde Idee.
Aber sehr schön finde ich die Idee, eine Möglichkeit anzubieten, dass für komplizierte Multies leicht Skripte ausgetauscht werden können. Dafür braucht man allerdings eigentlich keine Makros, oder?

Gruß,
Pfeffer.
 

Robin888

Geomaster
greiol schrieb:
Robin888 schrieb:
Aber ein Makro hätte den Vorteil, daß alles technische unsichtbar bleibt.
eben wolltest du es noch als plain datei ablegen ;)
An dieser Stelle meinte ich mit "unsichtbar", daß man im Feld nicht den gesamten Quelltext sehen muss und seine Antworten dazwischenquetschen. Das stelle ich mir bei Wolfscripten die man nicht selbst geschrieben hat schnell unübersichtlich vor.

greiol schrieb:
das sprengt ein wenig den rahmen dessen was ich unter einem "macro" verstehe, aber die grenzen kann man natürlich weit fassen.
:) Ich weiß. Es soll auch nur Möglichkeiten zeigen. So eine kleine harmlose Funktion kann eine Menge bewirken.

greiol schrieb:
Robin888 schrieb:
WherIgo light sozusagen. %-)
zum einen kann ich das "light" nicht so recht erkennen, zum anderen dürfte "nur lösbar mit cachewolf bleeding edge" die zahl der potentiellen sucher doch recht stark einschränken.
[/quote]<mode=ironie>Wenn wir einen eigenen Cachetyp von Groundspeak spendiert bekommen hat der Cachewolf endgültig einen Wettbewerbsvorteil!</mode>
Aber zugegeben mir ist auch erst hinterher eingefallen, daß solche Informationen ja auch auf anderem Wege zugänglich gemacht werden müssten. Schade eigentlich...

pfeffer schrieb:
Aber sehr schön finde ich die Idee, eine Möglichkeit anzubieten, dass für komplizierte Multies leicht Skripte ausgetauscht werden können. Dafür braucht man allerdings eigentlich keine Makros, oder?
Sicher nicht. Man kann ja einfach ein Wolf-Script nehmen und in den Löser kopieren.
Der Vorteil bei einem "Makro" wäre, daß der technische Teil in den Hintergrund wandert (wie es ja angestrebt wird).
Ich gebe nur noch ein, was gefragt ist und das Makro macht daraus "irgendwie" Koordinaten.

Hm... wie wäre es mit einem Sammelthread für Wolf-Skripte...? }:)

Robin(888)
 

MiK

Geoguru
Robin888 schrieb:
An dieser Stelle meinte ich mit "unsichtbar", daß man im Feld nicht den gesamten Quelltext sehen muss und seine Antworten dazwischenquetschen. Das stelle ich mir bei Wolfscripten die man nicht selbst geschrieben hat schnell unübersichtlich vor.
Das kann man aber auch jetzt schon recht übersichtlich gestalten. Im unteren Teil habe ich den Code, wie er grop von der skeleton-Funktion erzeugt wird. Darüber kopiere ich als Kommentar die Fragen aus der Beschreibung und die Variablenzuweisungen:

Code:
#Stage 1: Wie viele Latten hat der Zaun (A)?
A = 

#Stage 2: Wortwert des dritten Wortes auf dem Schild (B)?
B = 

...
Damit ist es im Feld dann recht übersichtlich und man muss nur nach jeder Stage "Rechnen" klicken.

Robin888 schrieb:
Hm... wie wäre es mit einem Sammelthread für Wolf-Skripte...? }:)
Ich hatte sogar schon überlegt dafür eine eigene Webseite einzurichten. Bin aber nie dazu gekommen.
 

Robin888

Geomaster
MiK schrieb:
Das kann man aber auch jetzt schon recht übersichtlich gestalten. Im unteren Teil habe ich den Code, wie er grop von der skeleton-Funktion erzeugt wird. Darüber kopiere ich als Kommentar die Fragen aus der Beschreibung und die Variablenzuweisungen
Oh. Ich dachte, der Solver kann mit leeren Zuweisungen nicht umgehen. :-o

Robin888 schrieb:
Hm... wie wäre es mit einem Sammelthread für Wolf-Skripte...? }:)
Ich hatte sogar schon überlegt dafür eine eigene Webseite einzurichten. Bin aber nie dazu gekommen.[/quote]:)

Robin(888)
 
OP
Engywuck

Engywuck

Geowizard
Robin888 schrieb:
Oh. Ich dachte, der Solver kann mit leeren Zuweisungen nicht umgehen. :-o
Das wäre mir neu. Ich mach das immer ohne Skeleton. Wenn z.B. in Station 1 A ermittelt wird und in Station 2 B, sieht das bei mir so aus:
A=
S1="N 57° 45."A"34 E 16° 5.234"
"Station 1: "S1
B=
S2="N 57° 45."B"34 E 16° 5.234"
"Station 2: "S2

Wenn ich A gefüllt habe und ich auf "Rechnen" klicke, dann kommt er so weit, bis B (noch leer) verwendet wird, und wirft mir dann einen Fehler aus. So habe ich einen natürlichen Programmabbruch an der Stelle, an den ich ihn brauche. Ganz ohne IFs.

Gruß,
E.
 

Robin888

Geomaster
Engywuck schrieb:
Wenn ich A gefüllt habe und ich auf "Rechnen" klicke, dann kommt er so weit, bis B (noch leer) verwendet wird, und wirft mir dann einen Fehler aus. So habe ich einen natürlichen Programmabbruch an der Stelle, an den ich ihn brauche. Ganz ohne IFs.
Uh! Dirty! :)

Ich glaube meine Problem trat eher auf, wenn ich Multis gemacht habe, bei denen die Koordinaten der Stationen schon bekannt waren.
Undeklarierte Variablen in einer IF-Abfrage machten das glaube ich Probleme, weswegen ich in solchen Fällen auf globale Variablen ($A, $B, ...) zurückgreifen muss.

Robin(888)
 
Oben