Nxc: Infinite-Monkey-Theorem

Modelle zum Nachbauen oder wo gibt es etwas interessantes oder Projekte?

Moderator: Moderatoren

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5252
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: Nxc: Infinite-Monkey-Theorem

Beitragvon HaWe » 11. Jun 2011 13:35

es gab auch viele verschiedene 3.3.8.9.er
Hauptsache, du hast jetzt die letzte, jetzt musst du nur noch das letzte test-release drüberkopieren (das zip NICHT mit Windows extrahieren, sondern mit WinZip oder WinRar!!!!!) -
und schon hast du 3.3.8.10!!
:)
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Nicholas
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 38
Registriert: 10. Jun 2011 18:35

Re: Nxc: Infinite-Monkey-Theorem

Beitragvon Nicholas » 11. Jun 2011 14:14

er arbeitet jetzt schon seit ca 14:50
wie kann man eigentlich über nxc den internen timer benutzen?

Nicholas
Möge die Macht mit euch sein

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5252
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: Nxc: Infinite-Monkey-Theorem

Beitragvon HaWe » 11. Jun 2011 14:48

CurrentTick()
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Nicholas
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 38
Registriert: 10. Jun 2011 18:35

Re: Nxc: Infinite-Monkey-Theorem

Beitragvon Nicholas » 11. Jun 2011 15:26

ich hab mal nicht aufgepasst und als ich mal wieder auf den nxt geschaut hab war er aus
bedeutet das er war durch oder ist er nur in den stand by modus gegangen

Nicholas
Möge die Macht mit euch sein

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5252
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: Nxc: Infinite-Monkey-Theorem

Beitragvon HaWe » 11. Jun 2011 15:31

ja, du musst im OnScreen-Menue unter Settings das automatische Ausschalten deaktivieren
Da fällt mir ein: Man sollte auch besser den Counter im Programm als LongInt (unsigned long) definieren.
Die Ausgabezeile heißt dann:

Code: Alles auswählen

printf1(0, 8,"%d", count);
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Nicholas
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 38
Registriert: 10. Jun 2011 18:35

Re: Nxc: Infinite-Monkey-Theorem

Beitragvon Nicholas » 11. Jun 2011 15:37

Code: Alles auswählen

#define printf1( _x, _y, _format1, _value1) { \
  string sval1 = FormatNum(_format1, _value1); \
  TextOut(_x, _y, sval1); \
}

string hamlet="sein oder nicht",   // Kurzform
        monkey="               ",
        buf1, buf2, buf3;
char i=0;
byte c;
bool fertig=false;
float count;

task main(){
  while(!fertig) {
    for (i=0; i<15; i++) {
      c=(rand()%27)+96;
      if (c==96) c=32;
      monkey[i]=c;
    }
    count+=1;

    // monkey=hamlet;  // ??

    buf1=SubStr(monkey, 0, 15);

    //buf2=SubStr(monkey,16, 13);
    //buf3=SubStr(monkey,29, 17);

    NumOut (0,48,CurrentTick()-FirstTick ())
    TextOut(0,40, buf1);
    //TextOut(0,32, buf2);
    //TextOut(0,24, buf3);printf1(0, 8,"%e", count);
    while (ButtonPressed(BTNCENTER, false)) ;  // freeze

    if(monkey==hamlet) {
      fertig=true;
      while(1);
    }
  }

}

ich hab mal den timer eingefügt

Nicholas
Möge die Macht mit euch sein

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5252
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: Nxc: Infinite-Monkey-Theorem

Beitragvon HaWe » 11. Jun 2011 15:39

und jetzt noch
unsigned long count;
statt float
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5252
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: Nxc: Infinite-Monkey-Theorem

Beitragvon HaWe » 11. Jun 2011 17:07

ich hab noch was schönes für dich:
formatierte Zeitausgabe mit Tagen, Stunden, Minuten, Sec, Millisec.
Man kann es jetzt ntl auch noch etwas mit anderen lustigen Beiträgen auflockern und möglicherweise abkürzen:

Code: Alles auswählen

#define printf1( _x, _y, _format1, _value1) { \
  string sval1 = FormatNum(_format1, _value1); \
  TextOut(_x, _y, sval1); \
}


#define clock() (CurrentTick()-FirstTick())

string gettimeofday(unsigned long lTime) {
  int s100, sec, min, hour, day;
  string sTime;
 
  s100=lTime%1000;
  lTime/=1000;
  sec=lTime%60;
  lTime/=60;
  min=lTime%60;
  lTime/=60;
  hour=lTime%24;
  lTime/=24;

  sTime=StrCat(FormatNum("%d",lTime),"d ",FormatNum("%02d",hour),":",FormatNum("%02d",min),"'",FormatNum("%02d",sec),".",FormatNum("%03d",s100));
  return(sTime);
}


string hamlet="sein oder nicht",   // Kurzform
       monkey="               ",
       n_bock="kein bock mehr ",   // Null Bock
       marvin="schalte mich ab",   // Marvin
       arthur="gibts hier tee ",   // Arthur
       zaphod="pangalaktischer",   // Zaphod
       slarty="kraklige kueste",   // Slartybarthfass
       vogonp="bindelwoerdeln ",   // Prostetnik Vogon Jeltz
       buf1, buf2, buf3;
char i=0;
byte c;
unsigned long count;

task main(){
  while(1) {
    for (i=0; i<15; i++) {
      c=(rand()%27)+96;
      if (c==96) c=32;
      monkey[i]=c;
    }
    count+=1;

    buf1=SubStr(monkey, 0, 15);

    //buf2=SubStr(monkey,16, 13);
    //buf3=SubStr(monkey,29, 17);


    TextOut(0,40, buf1);
    //TextOut(0,32, buf2);
    //TextOut(0,24, buf3);

    printf1(0, 8,"%d", count);
    TextOut(0, 0, gettimeofday(clock()) );

    while (ButtonPressed(BTNCENTER, false)) ;  // freeze
    if((monkey==hamlet)||(monkey==n_bock)||(monkey==marvin)||(monkey==arthur)||(monkey==zaphod)||(monkey==slarty)||(monkey==vogonp))
      { while(1); }
  }
}
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

hergipotter
Schreibt viel
Schreibt viel
Beiträge: 140
Registriert: 12. Jan 2011 19:26

Re: Nxc: Infinite-Monkey-Theorem

Beitragvon hergipotter » 11. Jun 2011 19:39

Mal ne Frage. Vielleicht check ich auch grad irgendwas nich aber ist es bei eurem Programm nicht so, dass immer zufällig 15 Zeichen in den String geschrieben werden und dann geguckt wird ob diese 15 Zeichen mit dem hamlet-Text übereinstimmen?

Das wäre doch aber falsch, weil angenommen die Affen schreiben erst:

"xyzsein oder ni"

und dann im nächsten Durchlauf

"chtasdfghjklöä#"

dann würde das dieses Programm ja nicht erkennen, die Affen hätten aber in Wirklichkeit nacheinander "sein oder nicht" getippt!

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5252
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: Nxc: Infinite-Monkey-Theorem

Beitragvon HaWe » 11. Jun 2011 19:44

ja, da hast du recht.
da könnte man vllt ne Art Schieberegister nehmen,
das hinterste Element fliegt raus,
alles eins nach hinten,
das vorderste wird neu randomisiert.
Dann wird mit dem Muster verglichen.

Guter Hinweis, danke! :)

Code: Alles auswählen

#define printf1( _x, _y, _format1, _value1) { \
  string sval1 = FormatNum(_format1, _value1); \
  TextOut(_x, _y, sval1); \
}


#define clock()  (CurrentTick()-FirstTick())

string gettimeofday(unsigned long lTime) {
  int s100, sec, min, hour, day;
  string sTime;
 
  s100=lTime%1000;
  lTime/=1000;
  sec=lTime%60;
  lTime/=60;
  min=lTime%60;
  lTime/=60;
  hour=lTime%24;
  lTime/=24;

  sTime=StrCat(FormatNum("%d",lTime),"d ",FormatNum("%02d",hour),":",FormatNum("%02d",min),"'",FormatNum("%02d",sec),".",FormatNum("%03d",s100));
  return(sTime);
}


string hamlet="sein oder nicht",   // Kurzform
       monkey="               ",
       n_bock="kein bock mehr ",   // Null Bock
       marvin="schalte mich ab",   // Marvin
       arthur="gibts hier tee ",   // Arthur
       zaphod="pangalaktischer",   // Zaphod
       slarty="kraklige kueste",   // Slartybarthfass
       vogonp="bindelwoerdeln ",   // Prostetnik Vogon Jeltz
       buf1, buf2, buf3;
char i=0;
byte c;
unsigned long count;

task main(){
  while(1) {
    for (i=14; i>0; --i) {
      monkey[i]=monkey[i-1];
    }
    c=(rand()%27)+96;
    if (c==96) c=32;
    monkey[0]=c;
    count+=1;

    buf1=SubStr(monkey, 0, 15);

    //buf2=SubStr(monkey,16, 13);
    //buf3=SubStr(monkey,29, 17);


    TextOut(0,40, buf1);
    //TextOut(0,32, buf2);
    //TextOut(0,24, buf3);

    printf1(0, 8,"%d", count);
    TextOut(0, 0, gettimeofday(clock()) );
   
    // Wait(500); // for testing

    while (ButtonPressed(BTNCENTER, false)) ;  // freeze
    if((monkey==hamlet)||(monkey==n_bock)||(monkey==marvin)||(monkey==arthur)||(monkey==zaphod)||(monkey==slarty)||(monkey==vogonp))
    {
      PlaySound(SOUND_FAST_UP);
      while(1);
    }
  }
 
}
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Nicholas
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 38
Registriert: 10. Jun 2011 18:35

Re: Nxc: Infinite-Monkey-Theorem

Beitragvon Nicholas » 11. Jun 2011 21:38

bei mir kommt auf dem nxt nur
p


1
0d 00:00'00.008
raus ich denk du hasts nur auf einen Buchstaben eingestellt weil p passt zu pangalaktischer

nicholas
Möge die Macht mit euch sein

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5252
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: Nxc: Infinite-Monkey-Theorem

Beitragvon HaWe » 11. Jun 2011 21:48

bei mir kommt bei obigem Code (direkt über deinem obigen Post) nach 22 sec dieser Screenshot :
hamlet.jpg
hamlet.jpg (7.91 KiB) 3160 mal betrachtet

(was gewünscht sinnvolles wird wschl erst nach 1 Mio Jahren herauskommen...)

ps:
nach 6 Minuten das 2. Bild....
hamlet2.jpg
hamlet2.jpg (8.34 KiB) 3160 mal betrachtet


und hier ein Video...
hamlet_000.zip
(8.92 KiB) 205-mal heruntergeladen
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5252
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: Nxc: Infinite-Monkey-Theorem

Beitragvon HaWe » 11. Jun 2011 22:15

hast du vllt noch nicht das neueste bricxcc test_release samt neuester fw aufgespielt (was du eigtl solltest...)?
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Benutzeravatar
NXT pro
Super-Enorm-Viel-Schreiber
Super-Enorm-Viel-Schreiber
Beiträge: 930
Registriert: 27. Sep 2010 21:38

Re: Nxc: Infinite-Monkey-Theorem

Beitragvon NXT pro » 12. Jun 2011 09:03

Ich rechne gerade die Dauer aus, die der NXT dafür theoretisch brauchen würde:
Nach dieser Rechnung (hoffe die ist richtig):
(100000/(15*60*1000))/0.0000000000000000000041735)/1000/60/60/24/365
Dabei ist 100000 die Zahl, die er in 15 Minuten geschafft hat, diese wird durch 15 Minuten in Millisekunden geteilt.
Und 0.0000000000000000... ergibt sich aus 7(Hamlets)/26(Buchstaben)^15(Anzahl der Buchstaben der Hamlets).
Dann wird es in Sekunden, Minuten, Stunden, Tage und Jahre umgewandelt.
Das Ergebnis (ohne Stellen nach dem Komma): Der NXT würde 844209948 Jahre brauchen.
Real coders don't comment their code - it was hard to write, it should be hard to understand!

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5252
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: Nxc: Infinite-Monkey-Theorem

Beitragvon HaWe » 12. Jun 2011 09:48

ja, 1 Milliarde Jahre habe ich auch schon kalkuliert (mit 100 Versuchen pro Sekunde), war mir aber nicht sicher, ob das stimmt - - aber das gilt ja auch nur, wenn man alle Möglichkeiten systematisch durchprobiert (und bis zum Schluss suchen muss), nicht, wenn man randomisiert: da kann es schon nach 10 sec geschafft sein - oder erst am Ende des Universums.

Ich habe jetzt den Suchstring mal auf "hamlet" verkleinert.
Vllt haben wir ja jetzt die Chance es zu erleben...^^

Code: Alles auswählen

#define printf1( _x, _y, _format1, _value1) { \
  string sval1 = FormatNum(_format1, _value1); \
  TextOut(_x, _y, sval1); \
}


#define clock()  (CurrentTick()-FirstTick())
#define time(_0_) CurrentTick()

string gettimeofday(unsigned long lTime) {
  int s100, sec, min, hour, day;
  string sTime;
 
  s100=lTime%1000;
  lTime/=1000;
  sec=lTime%60;
  lTime/=60;
  min=lTime%60;
  lTime/=60;
  hour=lTime%24;
  lTime/=24;

  sTime=StrCat(FormatNum("%d",lTime),"d ",FormatNum("%02d",hour),":",FormatNum("%02d",min),"'",FormatNum("%02d",sec),".",FormatNum("%03d",s100));
  return(sTime);
}


string hamlet="hamlet",   // Kurzform
       monkey="      ";
char i=0;
byte c;
unsigned long count;

task main(){
  while(1) {
    for (i=6; i>0; --i) {
      monkey[i]=monkey[i-1];
    }
    c=(rand()%27)+96;
    if (c==96) c=32;
    monkey[0]=c;
    count+=1;

    TextOut(0,40, monkey);

    printf1(0, 8,"%d", count);
    TextOut(0, 0, gettimeofday(clock()) );
   
    // Wait(500); // for testing

    while (ButtonPressed(BTNCENTER, false)) ;  // freeze
    if (monkey==hamlet)
    {
      PlaySound(SOUND_FAST_UP);
      while(1);
    }
  }
}
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E


Zurück zu „Projekte, Showcase, Bauanleitungen“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 12 Gäste

Lego Mindstorms EV3, NXT und RCX Forum : Haftungsauschluss