Hallo,
hier also meine Beiträge zum Rätsel. Ich habe mich hauptsächlich auf eine schnelle Erzeugung mittels Zahlen-Array konzentriert, was mir auch in den letzten beiden Varianten (V10 & V12 in der llb) denke ich recht gut gelungen ist. Was dann bei großen Generationen sehr viel Zeit kostet, ist die Umwandlung des Arrays in einen String.
Prinzipiell habe ich immer dasselbe Prinzip angewandt, nämlich Vergleich aufeinanderfolgender Elemente. Ich wende also kein Vorwissen an, dass Zahlen > 3 nicht vorkommen können.
In der ersten hier hochgeladenen Variante wird nach einem Elementwechsel in einer While-Schleife gesucht, wie oft das Element noch hintereinander vorkommt. Parallel wird die nächste Generation per Build-Array-Funktionen erstellt.
In den drei anderen Varianten werden immer 2 aufeinanderfolgende Elemente verglichen. Bei Elementwechsel wird entsprechend die nächste Generation weitergebaut. Variante 9 arbeitet hierbei mit Build-Array-Aufrufen, etwas unübersichtlicher, aber deutlich schneller, wird es dann in V10. Hier sind die Build-Array durch Replace-Array-Subset-Aufrufe ersetzt. V12 ist gegenüber V10 dahingehend speicheroptimiert, dass sowohl das Array der letzten Generation als auch das gerade zu bauende innerhalb desselben Arrays gespeichert werden. V10&V12 sind wie schon gesagt sehr schnell, allerdings bremst die Erzeugung eines Strings zusätzlich zum Array am Ende das Ganze doch sehr aus.
Ich hab mal alles runtergespeichertfür Version 8.0, damit sich noch mehr die Lösungen anschauen können.
LVF_Raetsel5_V8.0.llb (Größe: 254,58 KB / Downloads: 282)
Ach ja, noch ein Nachtrag: Ab Generation 11 fangen alle weiteren Würmer nur noch mit den Zahlen "1113122113" "3113112221" und "1321132132" an. Diese Periodizität lässt sich sicher noch weiter ausbauen, aber für mehr hatte ich keine Lust mehr.
MfG, Jens