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

WolfLang - Einstellige Quersumme?

Engywuck

Geowizard
Hallo,
mir ist jetzt schon bei mehreren Caches begegnet, dass ich die einstellige Quersumme bilden soll. Im Löser kann ich die die einfache Quersumme durch Funktion q() bilden. Für die einstellige Quersummer muss ich die Funktion so 2-3 mal geschachtelt aufrufen. Is zwar prinzipiell kein Problem, aber wär schick, wenn man dafür ne eigene Funktion hätte.
Und wenn der Wolf geschickt programmiert ist, sollte es auch in 3 Min implementiert sein ;-)

Grüße,
Engywuck
 

salzkammergut

Geomaster
Gibt es schon! Bei der Quersumme Funktion kann optional ein zweiter Parameter angegeben werden, der angibt wie oft die Quersumme berechnet werden soll. Also:
Code:
q(12345)        # => 15
q(12345,2)      #  => 6     {  weil q(12345) = 15 und q(15)=6   }
q(12345,3)      #  => 6
Mit 3 als zweitem Parameter bist Du im Regelfall einstellig (Die Mathematiker können ja mal ausrechnen ob das reicht).

Gruß
salzkammergut
 
OP
Engywuck

Engywuck

Geowizard
salzkammergut schrieb:
Mit 3 als zweitem Parameter bist Du im Regelfall einstellig (Die Mathematiker können ja mal ausrechnen ob das reicht).
Ah, das muss man natürlich wissen :D. Dann nehm ich einfach 9 als zweiten Parameter, dann passt's sicher immer... Obwohl, schicker wärs natürlich, den Parameter -1 verwenden zu können, der dann immer bis zur einstelligen Quersumme rechnet ;-) (Aber das ist wohl mehr ein ästhetischer Anspruch...)
Wo wir grad dabei sind: Gibts bei der Funktion val() eigentlich auch einen Parameter, der angibt, dass nicht A=1, B=2 usw. gilt sondern Z=1, Y=2, usw.? Das ist mir doch just im ersten Cache passiert, als ich den PDA das erste mal life dabei hatte und mit dem Löser strunzen wollte ;-)

Grüße,
Engywuck
 

salzkammergut

Geomaster
Engywuck schrieb:
Gibts bei der Funktion val() eigentlich auch einen Parameter, der angibt, dass nicht A=1, B=2 usw. gilt sondern Z=1, Y=2, usw.?
Den Parameter gibt's nicht, Du kannst das aber ganz einfach berechnen.
Es sei Z ein Textstring (z.B. "ABC") mit ausschliesslich Buchstaben und ohne Leerzeichen, dann kannst Du den von Dir gewünschten Wert einfach so berechnen:
Code:
len(Z)*27-val(Z)
Das ist ja nicht zu schwierig, oder ?

Grüße
skg
 
OP
Engywuck

Engywuck

Geowizard
Hey, die Formel ist gut :) Und nachdem ich verstanden hab, wie sie funktioniert, kann ich sie mir sogar merken :)

Merci,
Engywuck
 

Robin888

Geomaster
salzkammergut schrieb:
Mit 3 als zweitem Parameter bist Du im Regelfall einstellig (Die Mathematiker können ja mal ausrechnen ob das reicht).
Bin grad dabei mal rumzurechnen, welche Zahlen mit welchen Parametern abgedeckt werden.
Aber auch ich fände eine eigene Funktion resp. Aufruf praktischer und ästhetischer. :)

Robin(888)
 

Robin888

Geomaster
Robin888 schrieb:
Bin grad dabei mal rumzurechnen, welche Zahlen mit welchen Parametern abgedeckt werden.
Ok. Das Programm lief mir jetzt zu lange, so daß ich doch mal angefangen habe selbst zu rechnen. :)

Mit dreifacher Iteration wird die einstellige Quersumme garantiert berechnet für Zahlen bis 19 999 999 999 999 999 999 999 (22 Neunen) und für viele größere Zahlen. Also grob gesagt für Zahlen n<=10^22.

(Kein Wunder, daß mein Programm so lange läuft..)

Vierstellige Iteration stellt die einstellige Quersumme sicher für Zahlen bis n<=10^2 222 222 222 222 222 222 222. :)) (Also Zahlen mit über 2 Trillion Stellen!) (Eine solche Zahl darzustellen benötigt etwa 2 Zettabyte (=2 Mrd. Terabyte) Speicher! %-))

Ich denke, vier Iterationen sollten in den meisten Fällen reichen...

Robin(888) (der sich jetzt endlich mal Gedanken dazu gemacht hat)
 
Oben