"schließlich periodisch" ergibt nur im Kontext unendlich langer Folgen Sinn, damit können wir hier nicht wirklich umgehen. Es sei denn, man will argumentieren, dass es ein N gibt, so dass für alle n > N a(n) undefiniert ist. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra
Hab' gerade noch was ander Definition geändert, jetzt sollte es Sinn machen. -- main($)??<-$<='?'>>2?main($-!!putchar( (("$;99M?GD??(??/x0d??/a:???;a"+'?'/4) ??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
Ah, gut. Mist. Ich meinte eigentlich der durch die Perioden zusammengesetzte Teil soll möglichst groß sein. Also möglichst kleines N, nicht möglichst großes. In 0.3121231212 wäre das also 31212, nicht 12... -- main($)??<-$<='?'>>2?main($-!!putchar( (("$;99M?GD??(??/x0d??/a:???;a"+'?'/4) ??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
...nur ist dann natürlich für 1212121212121212 das Ergebnis auch 12121212. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra
Spricht man von der Periode einer Folge, so ist die kleinste Periode gemeint; alle anderen Perioden sind dann Vielfache dieser kleinsten Periode.
Steht zwar nicht explizit bei 'schließlich periodisch', gilt aber auch da, würde ich sagen. -- main($)??<-$<='?'>>2?main($-!!putchar( (("$;99M?GD??(??/x0d??/a:???;a"+'?'/4) ??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
size_t period_ix(charconst *s, size_t len) { charconst *p = s + len - 1;
for(size_t n = len / 2; n != 0; --n) { if(period_match(p, p - n)) { while(n % 2 == 0 && period_match(p, p - n / 2)) { n /= 2; } return len - n; } }
return len; }
Rest wie gehabt. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe DijkstraDieser Post wurde am 01.02.2009 um 20:14 Uhr von 0xdeadbeef editiert.
Jo stimmt zu 99% - char geht zwar auch für natürliche Zahlen - aber nicht so weit *g* Mit dem gezeigten Sample wird halt kein Unterschied zwischen 12 und "1 2" gemacht - ist aber kein Problem.
Ich habe so was ähnliches gehabt (vom Algorithmus her) - bin aber bei ein paar tausend Elementen gescheitert (Laufzeit).
Hab jetzt den Code der auch mit "Störwerten" zurecht kommt - muss ihn noch extrahieren. Arbeitet nach der Schablonenweise: 1 2 3 4 ... B 1 2 3 4 ... (B = Blank) Verschieben und dann auswerten - is auch ne möglichkeit. --