Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Rätselecke » Zahlenreihe Periode finden

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
01.02.2009, 16:36 Uhr
0xdeadbeef
Gott
(Operator)


"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
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
01.02.2009, 16:42 Uhr
kronos
Quotenfisch
(Operator)


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)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
01.02.2009, 17:08 Uhr
0xdeadbeef
Gott
(Operator)


In dem Fall:

C++:
#include <stdbool.h>
#include <stddef.h>
#include <stdio.h>

_Bool period_match(char const *p, char const *q) {
  for(int n = 0; p + n != q; --n) {
    if(p[n] != q[n]) {
      return false;
    }
  }

  return true;
}

size_t period_ix(char const *s, size_t len) {
  char const *p = s + len - 1;

  for(size_t n = 1; 2 * n < len; ++n) {
    if(period_match(p, p - n)) {
      return len - n;
    }
  }

  return len;
}

int main(void) {
  char const s[] = "0554412121212";

  printf("%s\n", s + period_ix(s, sizeof(s) - 1));

  return 0;
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 01.02.2009 um 17:29 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
01.02.2009, 18:16 Uhr
kronos
Quotenfisch
(Operator)


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)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
01.02.2009, 18:42 Uhr
0xdeadbeef
Gott
(Operator)


...nur ist dann natürlich für 1212121212121212 das Ergebnis auch 12121212.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
01.02.2009, 19:33 Uhr
kronos
Quotenfisch
(Operator)


http://de.wikipedia.org/wiki/Periodizit%C3%A4t_(Mathematik):

Zitat:
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)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
01.02.2009, 20:13 Uhr
0xdeadbeef
Gott
(Operator)


In dem Fall:

C++:
size_t period_ix(char const *s, size_t len) {
  char const *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 Dijkstra

Dieser Post wurde am 01.02.2009 um 20:14 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
10.02.2009, 11:58 Uhr
mike
Pinguinhüpfer
(Operator)


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.
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ Rätselecke ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: