Zum Inhalt springen

Empfohlene Beiträge

Geschrieben
Originally posted by Ganymed

Wenns hilft... :rolleyes:

wir versuchens...also

die 1.zeile ist gegeben...

die 1

so...jede zeile beschreibt ab nun die vorhergehende...

in der 2. zeile steht:

1 1 --> eine eins (!)

in der 3. zeile steht:

2 1 --> zwei einsen

in der 4. zeile steht:

1 2 1 1 --> eine zwei und eine eins

und so weiter....

nochmal auf die 4. zeile:

1(eine) 2(zwei) 1(eine) 1(eins)

hastes?

Geschrieben
Originally posted by Jaraz

Kleine Programmieraufgabe an alle Sprachen fürs Wochenende:

Wie lautet die 111 Zeile?

*grummel*

Kann hier keine/r programmieren?

Oder seit ihr alle SO beschäftigt? ;)

Gruß Jaraz

Geschrieben
Originally posted by Jaraz

*grummel*

Kann hier keine/r programmieren?

Oder seit ihr alle SO beschäftigt? ;)

Das ist weniger eine Frage des Könnens als der Größe des Speichers :D

Die 111. Zeile fängt so an:

3113112221131112311332111213122112311311123112111331121113122112132113121113222112311311221112131221123113112221121113311211131122211211131221131211132221121321132132212321121113121112133221123113112221131112212211131221121321131211132221123113112221131112311332211211133112111311222112111312211311123113322112111312211312111322212321121113121112133221121321132132211331121321132213211231132132211211131221232112111312212221121123222112311311222113111231133211121321321122111312211312111322211213211321322123211211131211121332211231131122211311123113321112131221123113111231121123222112111331121113112221121113122113111231133221121113122113121113221112131221123113111231121123222112111312211312111322212321121113121112131112132112311321322112111312212321121113122122211211232221121321132132211331121321231231121113112221121321132132211322132113213221123113112221133112132123222112111312211312112213211231132132211211131221131211322113321132211221121332211231131122211311123113321112131...

Geschrieben
Originally posted by Klotzkopp

Das ist weniger eine Frage des Könnens als der Größe des Speichers :D

Wenn die Aufgabe einfach wäre, hätte ich sie nicht gestellt. :D

Gruß Jaraz

Geschrieben
Originally posted by Jaraz

Wenn die Aufgabe einfach wäre, hätte ich sie nicht gestellt. :D

Du willst mir doch hoffentlich nicht ernsthaft erzählen, dass dich das Ergebnis interessiert. Selbst wenn man 5 Ziffern in ein Byte packt, sind das immer noch ca. 4 Terabyte. Wenn ich das hier poste, bekomme ich Ärger mit e@sy. :D :D :D
Geschrieben
Originally posted by Klotzkopp

Du willst mir doch hoffentlich nicht ernsthaft erzählen, dass dich das Ergebnis interessiert. Selbst wenn man 5 Ziffern in ein Byte packt, sind das immer noch ca. 4 Terabyte. Wenn ich das hier poste, bekomme ich Ärger mit e@sy. :D :D :D

Ok, Ok,

Nachdem ich den int Überlauf bei Java in Zeile 58 erreicht hatte, dachte ich mit long würde ich hinkommen.

Nur bastel ich gerade noch an der passenden Datenstruktur.

An Terrabyte kann ich noch nicht so ganz glauben.

Hast du wirklich dann bis Zeile 111 das Ergebniss?

Falls ja, kannste irgendwie nen Hashwert ermitteln.

Gruß Jaraz

Nachtrag: OK, ich habe gerade mal den Taschenrechner in die Hand genommen und aufgrund der wachstumskurve nen Schätzwert ermittelt.

Hast recht, das ganze geht in den Terrabyte Bereich.

Trotzdem würden mich die Sourcen interessieren, falls du das komplett durchgerechnet hast.

Geschrieben

Ich hab es nicht bis zum Ende durchgerechnet. Nachdem mein PC ab Zeile 65 nur noch mit Auslagern beschäftigt war, habe ich abgebrochen. Der Wachstumsfaktor von Zeile zu Zeile scheint sich zwischen 1,303 und 1,304 einzupendeln.

Der Sourcecode:

#include <string>
#include <sstream>
using namespace std;

string zeile( const string& s )
{
char c = s[0], anz = '1';
int len = s.length();
stringstream ss;
for( int i=1; i<len; ++i ) {
if( s[i] == c ) {
++anz;
}
else {
ss << anz << c;
c = s[i];
anz = '1';
}
}
ss << anz << c;

return ss.str();
}[/CODE]

Geschrieben

Hi, so in etwa habe ich das auch.

Ich dachte schon, du hättest das ganze Blockweise und nicht Zeilenweise abgearbeitet.

So hätte man sich einfach die Anzahl der Stellen merken können und gut is.

Wenn ich mal viel langeweile habe, werde ich das mal versuchen.

Gruß Jaraz

PS: Ich hoffe wir haben e@sy nicht zu sehr geschockt.

Was das alleine an Traffic gekostet hätte. :D

Geschrieben
Originally posted by tauron

nach 16 Stunden hab ichs bei Durchlauf 54 abgebrochen, das Ergebnis hatte da schon 1.982.710 Stellen :)

Da soll nochmal einer sagen, Java wäre langsam. :D

Bis einschließlich Zeile 57 dauert bei mir keine 6 Sekunden. :P

Gruß Jaraz

Geschrieben
Originally posted by Jaraz

Da soll nochmal einer sagen, Java wäre langsam. :D

Bis einschließlich Zeile 57 dauert bei mir keine 6 Sekunden. :P

Das hat wohl eher mit dem Prozessor zu tun... bei mir braucht er bis Zeile 40 genau 731,96 sekunden (PIII 400) - die Programmierung könnte auch nicht gerade ideal sein, das kommt noch dazu... für einen Vergleich müsste derselbe algorithmus verwendet werden.

:cool:

Geschrieben

Sollte auch kein Angriff sein. ;)

Pentium 1,7



public class Start {


  public static void main(String args[]) {


    int zaehler;

    int position = 1;

    int wert;

    int[] a = { 1 };

    int[] z = null;

    long time = System.currentTimeMillis();


    // bis Zeile 31, da Zeile 1 nicht mitgezählt wird.

    for (int i = 0; i < 30; i++) {


      //Stellt sicher das das Array groß genug ist.

      if (i > 10) {

        z = new int[(int) (position * 1.4)];

      } else {

        z = new int[position * 2];

      }


      position = 0;

      zaehler = 0;

      wert = a[0];


      //a[] ist die Ausgangsreihe, z[] die neue Ergebnisreihe

      //position ist die laufende Stelle der Ergebnisreihe

      //wert ist der Wert der aktuellen Stelle

      //zaehler ist die Anzahl der gleichen Zahlen die hintereinander stehen

      //j ist die laufende Stelle der Ausgangsreihe

      for (int j = 0; j < a.length; j++) {

        if (a[j] != 0) {

          if (a[j] == wert) {

            zaehler++;

          } else {

            z[position] = zaehler;

            position++;

            z[position] = wert;

            wert = a[j];

            zaehler = 1;

            position++;

          }

        }

      }


      z[position] = zaehler;

      position++;

      z[position] = wert;

      position++;

      a = z;


      //Ausgabe: Nur für kleine Zeilenanzahl zu empfehlen.

      /*for (int k = 0; k < position; k++) {

        System.out.print(z[k]);

      }

      System.out.println("");*/

    }

    System.out.println((System.currentTimeMillis() - time) / 1000 + " Sekunden");

  }

}


Gruß Jaraz

Geschrieben

und was haben wir jetzt daraus gelernt?

Saga ist eine Frau!!

mein Weltbild wurde zerstört!

und warum? nicht weil sie eine Frau ist, sondern ich ein Mann, und ich es auch nicht checke ! :)

ich werde michaber nochmal reinhängen, vielleicht pack ichs ja bis zum ende meiner ausbildung so in ca. 2 jahren!

Geschrieben
Originally posted by Krampe

und ich es auch nicht checke ! :)

Was nicht? Das Rätsel oder die Programme.

Das Rätsel wäre peinlich, da es mittlerweile so ausführlich wie nur möglich erklärt wurde.

Ob die letzen Zahlen der 111 Zeile stimmen, kann ich dir leider nicht sagen, da mir die Terrabytes ausgegangen sind. ;)

Gruß Jaraz

Geschrieben
Originally posted by Jaraz

Ob die letzen Zahlen der 111 Zeile stimmen, kann ich dir leider nicht sagen, da mir die Terrabytes ausgegangen sind. ;)

Ja ja, die Informatiker!

Meine Logik sagt mir, daß von Hinten nach vorne sich immer 4 - Reihen bilden, also jedes vierte Ende identisch ist.

Mit fortlaufender Folge werden hinten immer mehr Ziffern signifikant festgeschrieben.

Aber warum das so ist??

Also Aufgabe : mal nur die letzten Ziffern machen (bis auf 20 Stellen dürfte reichen) und meine Theorie empirisch überprüfen.

Es sind zur Berechnung folglich nur die letzten 22 Stellen massgeblich.

Und dann reichen die Terrabytes wieder aus.

Geschrieben

Hi,

:uli :uli :uli

Hier die letzten 22 Stellen der Reihen 38-57 von links nach rechts.

1221311221113112233112...Anfang

1122113112221331122232...Anfang

1222123112231132122331...Anfang

1123112131122231123121...Anfang

1221311221113112233112...Anfang

1122113112221331122232...Anfang

1222123112231132122331...Anfang

1123112131122231123121...Anfang

1221311221113112233112...Anfang

1122113112221331122232...Anfang

1222123112231132122331...Anfang

1123112131122231123121...Anfang

1221311221113112233112...Anfang

1122113112221331122232...Anfang

1222123112231132122331...Anfang

1123112131122231123121...Anfang

1221311221113112233112...Anfang

1122113112221331122232...Anfang

1222123112231132122331...Anfang

1123112131122231123121...Anfang

Hast also recht, die Reihen haben dieselben 4 Endungen.

Tja, manchmal sollte man sich das ganze doch einfach mal näher anschauen bevor man loshakt. :D

Gruß Jaraz

PS: Jetzt weiss ich auch wieder warum es besser war mein Studium abzubrechen. ;)

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...