Hey,
mal ne Frage zu Deinem Algorithmus ..
Ich weiß Du probierst Dich aus und versuchst Dich an eigenen Beispielen. Deshalb mache ich mir weniger Gedanken darüber, wie Du Deine Aufgabe lösen möchtest, auch weil zu Beginn der Diskussion nicht nur das Programmieren besprochen wurde, sondern auch die Lösungsstrategien. Und es ohne hin mehrere Wege nach Rom gibt.
Aber falls Du mit dem gewählten Weg nicht gut voran kommst - fühle Dich frei andere Ansätze zu wahlen. Auch/Besonders Programmierer gehen den Weg des geringsten Widerstandes -> Erinnere an geeignete Lösungsstrategien.
Kleine Anregung, aber keine Aufforderung: Mir scheint Du verfolgst einen Algorithmus, der, wie ich sagen würde, absolut erscheint. Denn er beruht ausschließlich auf dem Eingabedatum. Vielleicht könnte ein rekursiver oder ein expliziter Ansatz leichter sein. Ich verrate mal nicht mehr als Dir einen Link über Zahlenfolgen (Schul-Mathe) zu schicken. Link: http://www.mathematik-wissen.de/zahlenfolgen.htm
Viel Erfolg
Daniel
PS: Wegen der RegExp: Nimm mal Deine "Sparversion" und dann den Vorschlag aus der PickAxe und untersuche diesen String eines wirklich dooooofen Benutzers, mit denen immer gerechnet werden muss.
Code:
date = "Hallo heute ist der 23418.02.200834 und es ziemlich kalt."
date =~ /(\d+)\.(\d\d)\.(\d\d)(\d+)/
p ['gespart:', $&, '=>' , $1, $2, $3, $4].join(" ")
date =~ /(\d\d)\.(\d\d)\.(\d\d)(\d\d)/
p ['pickaxe:', $&, '=>' , $1, $2, $3, $4].join(" ")
date =~ /\s(\d\d)\.(\d\d)\.(\d\d)(\d\d)\s/ # (1)
p ['genauer:', $&, '=>' , $1, $2, $3, $4].join(" ") # muss leer sein, da nix zu (1) gefunden wurde
date = "Un jetzt ist ein schlauer Benutzer dran .. Der 18.02.2008 war ziemlich kalt."
date =~ /\s(\d\d)\.(\d\d)\.(\d\d)(\d\d)\s/
p " ", $&, $&.strip , $1, $2, $3, $4
Probieren geht über studieren. Und warum das so ist - steht sehr schön in http://www.night-ray.com/regex.pdf
Lesezeichen