Programmieraufgabe zur Nacht

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Original geschrieben von Blackgreetz
    Doch. Einkaufen gehen, was ich gleich tun werde..
    Frau/Freundin/Hund gibbet leider nicht und Tutorials schreibe ich nicht (mehr)..

    Wenn sich noch 2 andere finden, die den Tipp heut noch haben wollen, dann stell ich ihn rein. Ansonsten morgen vormittag^^...

    mfg
    hund kann ich dir geben .. habe noch 3 welpen hier rumflitzen
    natürlich hätte ich gerne den tipp
    Gruß
    Uzu

    private Homepage

    Kommentar


    • Bitte den Tipp noch nicht geben, habe mich eben drangesetzt und ich glaube ich habs auch schon... Wenn ichs nicht innerhalb von 15 Minuten bestätige dann kannst du den Tipp geben...

      // Edit: Also falls die Eingabe von "aaaaaaaaa" ein gewolltes Ergebnis ausspuckt: Dann her mit dem Tipp...

      Ansonsten seh ich das als Fehler an und denke habe die Lösung *umsetzt*

      // Edit2: Crypting geht... Da die Aufgabe aber decrypt war mach ich das auch noch...

      // Edit3: K, Code ist fertig... Werde ihn gleich zusammen mit einer Demo posten (etwas überarbeitet und kommentiert)
      Zuletzt geändert von Schanz; 05.07.2008, 19:54.

      Kommentar


      • Das Ergebnis ist gewollt...

        Da ich jetzt nicht weiß, wie weit du bist, geb ich nur einen "halben" Tipp..

        Der ganze beruht auf einer mathematischen Folge. Name wäre der richtige Tipp.

        Es sind allerdings bei bestimmten Sachen fluktuationen (fällt eventuell bei deinem "aaaaaaaaa" auf ..)

        mfg

        Kommentar


        • So....

          1. Script ist hier zum testen:
          http://www.l0ol.de/bold/aold/algo.php?string=bdbfdfdhf

          2. Decrypt:
          http://www.l0ol.de/bold/aold/algo.ph...action=decrypt

          3. Mein Script liefert nur teilweise richtige Ergebnisse (z.B. der String "bdbfdfdhf" wird richtig ver UND entschluesselt. Der String "aaaaaaaa" aber nicht, da kapier ich den Logik nicht ganz)

          Wie ICH es gemacht habe erkläre ich unten... Hier erstmal der Code:

          PHP-Code:
          <?php
          error_reporting
          (E_ALL);
          // Validsigns = Array mit allen Buchstaben, wird spaeter benoetigt um bsp. fuer den Wert "0" -> "a" auszugeben, und fuer den Wert "4" -> "e" usw...
          // Validsigns2 = Das selbe Array allerdings liefert es fuer den Wert "a" -> "0", und fuer den Wert "e" -> "4" usw...
          $validsigns = array("a""b""c""d""e""f""g""h""i""j""k""l""m""n""o""p""q""r""s""t""u""v""w""x""y""z");
          $validsigns2 array_flip($validsigns);

          // 1. If = Scriptabbruch wenn kein String uebergeben wurde
          // 2. If = Scriptabbruch wenn der String Zeichen enthaelt die keine Buchstaben sind (Sonderzeichen und Zahlen)
          // 3. If = Wenn ein String ENTSCHLUESSELT werden soll wird wird das alphabet im Array umgedreht (abcdef...)->(zyxwvu...)
          if(!isSet($_GET['string']) || empty($_GET['string'])) die("No String given!");
          if(
          ctype_alpha($_GET['string']) === false) die("Bitte nur Buchstaben im String verwenden");
          if(isSet(
          $_GET['action']) && $_GET['action'] == "decrypt")
          {
            
          $validsigns array_reverse($validsigns);
            
          $validsigns2 array_flip($validsigns);
          }

          // Jeder Buchstabe im String wird in ein Array geschrieben
          $string str_split(strtolower($_GET['string']), 1);

          // Wandelt alle Buchstaben in die jeweiligen Zeichen des Codes um
          $last 1;
          $slast 0;
          $firstrun true;
          $total count($validsigns);

          foreach(
          $string as $sign)
          {
            
          $current $last $slast;
            
            
          $newindex $validsigns2[$sign]+$current;
            if(
          $newindex >= $total$newindex $newindex%$total;
            
            echo 
          $validsigns[$newindex];
            
            if(!
          $firstrun$slast $last;
            
          $last $current;
            if(
          $firstrun$firstrun false;
          }
          ?>
          So, ich muss ja nur noch die foreach Schleife erklären, der Rest ist kommentiert.

          Dazu habe ich folgendes herausbekommen:
          Code:
          String = bbbbb
          
          0. Zeichen (crypted) = 1 Zeichen im Alphabet versetzt (b->c) (1)
          
          1. Zeichen (crypted) = 1 Zeichen im Alphabet versetzt (b->c) (1)
          2. Zeichen (crypted) = 1 Zeichen im Alphabet versetzt (b->c) (1)
          3. Zeichen (crypted) = 2 Zeichen im Alphabet versetzt (b->d) (2)
          4. Zeichen (crypted) = 3 Zeichen im Alphabet versetzt (b->e) (3)
          5. Zeichen (crypted) = 5 Zeichen im Alphabet versetzt (b->g) (5)
          ...
          So geht das immer so weiter... Die "versetzung" setzt sich also aus den Stellen des LETZTEN und VORLETZTEN versetzen Zeichens zusammen.

          Bsp. 4. Zeichen = 2+1 = 3
          Bsp. 5. Zeichen = 3+2 = 5

          Vor dem 1. Zeichen muss man sich gedanklich noch ein 0. Zeichen vorstellen was immer mit dem Wert "1" dort steht...
          Das Vorletzte Zeichen gibt es noch nicht und wird mit dem Wert "0" angenommen.

          Sooo ist auch die Schleife aufgebaut.

          Und jetzt versuch ich noch herauszufinden was daran falsch ist.

          // Edit 1: Ok, es hat etwas mit den Vokabeln "a, e, i, o, u" zu tun.
          Strings ohne diese Buchstaben werden korrekt ver-/ und entschlüsselt.

          // Edit 2: Ok, ich überlass den anderen das Rästsel... kA wie das funktioniert... Irgentwie ink-/dekrementieren sich Buchstaben nach einem Vokal entsprechend der Stelle des Vokals
          (Ich glaube die "andere hälfte" des Tipps hätte mich weiter gebracht...)
          Zuletzt geändert von Schanz; 05.07.2008, 21:10.

          Kommentar


          • Sieht doch schon gut aus.

            Ansich hast du den anderen damit eine große Hilfestellung gegeben, da du ja die Folge teilweise bekanntgegeben hast. Wenn man danach suchen würde, findet man auch ganz schnell den Namen der Folge

            ..und dein Ansatz für dein Problem sieht auch gut aus.

            mfg
            Edit(So,1:30): Du musst antworten Schanz, sonst seh ich nichts

            Also: Die Folge nennt sich Fibonacci-Folge. Danach werden die Buchstaben verschlüsselt.
            Bei Vokabeln fängt die Folge wieder von vorne an.
            Jetzt muss man nur noch gucken, wie sich die nachfolgenden Buchstaben verhalten....

            Ich setz mal das Zeitlimit auf Montag 18 Uhr.
            Zuletzt geändert von Blackgreetz; 06.07.2008, 00:29.

            Kommentar


            • Tschuldige.. Das nächste mal Antworte ich.

              Ja das die Folge wieder von vorne Anfängt hatte ich schon soweit..
              Nur dann war immer noch ein kleiner fehler drinnen.
              Zuletzt geändert von Schanz; 06.07.2008, 11:28.

              Kommentar


              • Dann guck dir mal folgenden crypt an:

                http://blacksoul.111mb.de/phpr/crypt...ing=hallohallo

                Vlt zeigt der dir genaueres

                mfg

                Kommentar


                • Original geschrieben von Blackgreetz
                  Dann guck dir mal folgenden crypt an:

                  http://blacksoul.111mb.de/phpr/crypt...ing=hallohallo

                  Vlt zeigt der dir genaueres

                  mfg
                  so hab jetzt wie es geht. Werde es aber nicht in PHP umsetzten, keine Lust mehr auf reverse engeneering^^... (und so wie es aussieht bin ich eh der einzige der was macht )

                  Also: Nach einem Vokal geht es so weiter als wäre das Vokal das erste Zeichen im String.
                  Der selbe Algorythmus wird allerdings auf die Nachfolgenden buchstaben umgekehrt angewendet.

                  Das heißt:
                  Der 1. Buchstabe nach einem Vokal ist um 1 nach hinten geschoben
                  Der 2. Buchstabe nach einem Vokal ist um 1 nach hinten geschoben
                  Der 3. Buchstabe nach einem Vokal ist um 1 nach hinten geschoben
                  Der 4. Buchstabe nach einem Vokal ist um 2 nach hinten geschoben
                  Der 5. Buchstabe nach einem Vokal ist um 3 nach hinten geschoben
                  Der 6. Buchstabe nach einem Vokal ist um 5 nach hinten geschoben
                  ....

                  Ich versteh zwar nicht wieso die ersten 3. um nur eine Stelle verschoeben sind (sollten es nicht nur die ersten 2 sein?!?!), aber dadrum kümmere ich mich nun auch nicht mehr ^^...
                  Wer will kann das ganze jetzt in einem funktionierenden Code umsetzten, meine beiden Beiträge erklären den Algorythmus soweit vollständig.

                  Kommentar


                  • Also: Nach einem Vokal geht es so weiter als wäre das Vokal das erste Zeichen im String.
                    Der selbe Algorythmus wird allerdings auf die Nachfolgenden buchstaben umgekehrt angewendet.

                    Das heißt:
                    Der 1. Buchstabe nach einem Vokal ist um 1 nach hinten geschoben
                    Der 2. Buchstabe nach einem Vokal ist um 1 nach hinten geschoben
                    Der 3. Buchstabe nach einem Vokal ist um 1 nach hinten geschoben
                    Der 4. Buchstabe nach einem Vokal ist um 2 nach hinten geschoben
                    Der 5. Buchstabe nach einem Vokal ist um 3 nach hinten geschoben
                    Der 6. Buchstabe nach einem Vokal ist um 5 nach hinten geschoben
                    Erster Teil stimmt, aber deine Verschiebung der Buchstaben nicht.

                    hallohallo
                    iblmqhblmq

                    < Daran erkennt man es bereits...

                    mfg

                    Kommentar


                    • Ja...

                      ..egal
                      Ich geb mal an den nächsten ab ..

                      Also:
                      Die Verschiebung fand im a-z-Bereich statt mittels der Fibonacci-Folge.
                      Bei Vokalen wurde der Counter wieder zurückgesetzt und der 1. Buchstabe nach dem Vokal wurde nicht verschoben, aber die Folge ging weiter.
                      D.h. der 2. Buchstabe wurde dann um 1 verschoben, aber der 3. Buchstabe dann schon um 2.

                      Code:
                      PHP-Code:
                      <?php

                       
                      function fibonacci($index,$x 0$y 0){
                        
                      $z = ($x == && $y == 0) ? $x+$y;
                        return ((
                      $index-1) == 0) ? ($z) : fibonacci($index-1,$y,$z);
                       }

                       
                      $buchstaben= array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q',
                      'r','s','t','u','v','w','x','y','z');

                       if(isset(
                      $_GET['string'])){

                         
                      $string strtolower($_GET['string']);

                         if(
                      preg_match("#^[a-z]*$#",$string)){

                           
                      $k 1;
                           
                      $v 0;  // vokal davor oder nicht?
                           
                      $crypted "";

                           for(
                      $i=0;$i<strlen($string);$i++){

                             if(
                      in_array($string{$i},array('a','e','i','o','u'))){

                               
                      //Vokal zurücksetzen
                               
                      if($v==1){

                                 
                      $crypted .= $string{$i};
                                 
                      $k 1;

                               }else{

                                 
                      $letter array_keys($buchstaben,$string{$i});
                                 
                      $n fibonacci($k) + ($letter[0]+1);
                                 
                      $n = (($n 26) == 0) ? 26 : ($n%26);
                                 
                      $crypted .= $buchstaben[$n-1];
                                 
                      $k 1;
                                 
                      $v 1;

                               }

                             }else{

                               if(
                      $v == 1){
                                 
                      $crypted .= $string{$i};
                                 
                      $k++;
                                 
                      $v 0;
                               }else{
                                 
                      $letter array_keys($buchstaben,$string{$i});
                                 
                      $n fibonacci($k) + ($letter[0]+1);
                                 
                      $n = (($n 26) == 0) ? 26 : ($n%26);
                                 
                      $crypted .= $buchstaben[$n-1];
                                 
                      $k++;
                               }
                             }
                           }

                           echo 
                      $crypted;
                         }else{
                           echo 
                      "Bitte nur Buchstaben von a-z bzw. A-Z";
                         }
                       }
                      Ich geb mal an den ab, der will. ^^
                      Falls überhaupt noch wer will^^..

                      mfg

                      Kommentar


                      • Na, komm, dann mach ich das mal.

                        Im Anhang eine Wortliste. Baue auf dieser Basis eine "Did you mean"-Funktion - also eine Funktion, der ein Wort aus dieser Liste, möglicherweise falsch geschrieben, übergeben wird, und die ermitteln, welches Wort gemeint gewesen sein könnte. Die "Test"-Routine werde ich heute Abend posten. Ihr habt bis Morgen, 15:00 Zeit

                        PHP-Code:
                        array(
                            
                        'ARQUES'
                            
                        'ATP-Turnier'
                            
                        'Abchasien'
                            
                        'Abschaltung'
                            
                        'Ackermann'
                            
                        'Agrarsubventionen'
                            
                        'Airline'
                            
                        'Anixe'
                            
                        'Annika'
                            
                        'Atomausstieg'
                            
                        'Atomenergie'
                            
                        'Atommeiler'
                            
                        'Atompolitik'
                            
                        'Atomstreit'
                            
                        'Aufenthaltserlaubnis'
                            
                        'Ausstand'
                            
                        'Barrot'
                            
                        'Barth'
                            
                        'Baur'
                            
                        'Beiersdorfer'
                            
                        'Bertha'
                            
                        'Bischoff'
                            
                        'Bitkom'
                            
                        'Bloomberg'
                            
                        'Borg'
                            
                        'Brokkoli'
                            
                        'Bundesnetzagentur'
                            
                        'Buschkowsky'
                            
                        'Cadillac'
                            
                        'Cannes'
                            
                        'Carolina'
                            
                        'Carreras'
                            
                        'Chevrolet'
                            
                        'Coleman'
                            
                        'Computerspiele'
                            
                        'Credit'
                            
                        'Crouch'
                            
                        'DVB-T'
                            
                        'Debitel'
                            
                        'Deichmann'
                            
                        'Dmitri Medwedew'
                            
                        'Donaueschingen'
                            
                        'EMI'
                            
                        'EU-Kommissionsprsident'
                            
                        'EU-Staaten'
                            
                        'Einwanderung'
                            
                        'Einwanderungspolitik'
                            
                        'Ellwangen'
                            
                        'Elmshorn'
                            
                        'Elsass'
                            
                        'Enkelmann'
                            
                        'Eppler'
                            
                        'Erdl'
                            
                        'EreignisErderwrmung'
                            
                        'Eurosport'
                            
                        'Eurowings'
                            
                        'Flamenco'
                            
                        'Freddie Mac'
                            
                        'Freiberg'
                            
                        'Freizgigkeit'
                            
                        'Fresenius'
                            
                        'Frontex'
                            
                        'Funktionre'
                            
                        'GEMA'
                            
                        'GWG'
                            
                        'Gas Natural'
                            
                        'Generika'
                            
                        'Gesamtklassement'
                            
                        'Gnzburg'
                            
                        'Gontard'
                            
                        'Hasan'
                            
                        'Hauptfeld'
                            
                        'Heckmann'
                            
                        'Hedge-Fonds'
                            
                        'Heiligendamm'
                            
                        'Heisig'
                            
                        'Hero'
                            
                        'Hokkaido'
                            
                        'Holtzbrinck'
                            
                        'IPO'
                            
                        'IT-Fitness'
                            
                        'Icahn'
                            
                        'Industrienationen'
                            
                        'Industrieproduktion'
                            
                        'Insolvenzantrag'
                            
                        'Islamabad'
                            
                        'Kabul'
                            
                        'Karachi'
                            
                        'Keith Urban'
                            
                        'Kerkeling'
                            
                        'Kernenergie'
                            
                        'Kernkraft'
                            
                        'Klckner'
                            
                        'Klimapolitik'
                            
                        'Klitschko'
                            
                        'Komax'
                            
                        'Lennox'
                            
                        'Lufthansa'
                            
                        'Madeleine'
                            
                        'Mao'
                            
                        'Martin Jol'
                            
                        'Mauritius'
                            
                        'Medwedew'
                            
                        'Microsoft'
                            
                        'Morrison'
                            
                        'NBC'
                            
                        'NBC Universal'
                            
                        'Nashville'
                            
                        'Neu-Isenburg'
                            
                        'Neuwahlen'
                            
                        'Nielsen'
                            
                        'Nintendo'
                            
                        'Nordex'
                            
                        'Oliver Shanti'
                            
                        'Online-Banking'
                            
                        'Organisation'
                            
                        'Ort'
                            
                        'Pakt'
                            
                        'Pamplona'
                            
                        'Paulo'
                            
                        'Personalvorstand'
                            
                        'Pete'
                            
                        'Piloten'
                            
                        'Pilotengewerkschaft'
                            
                        'Pilotenvereinigung'
                            
                        'PolitikerBarroso'
                            
                        'Portsmouth'
                            
                        'Postbank'
                            
                        'Rafael Nadal'
                            
                        'Robert Kubica'
                            
                        'SPOE'
                            
                        'SPOE-Chef'
                            
                        'Salzau'
                            
                        'Schlagwort'
                            
                        'Seidenberg'
                            
                        'Selbstmordattentter'
                            
                        'Siedlungen'
                            
                        'Sony'
                            
                        'Sorin'
                            
                        'Sport'
                            
                        'Sportchef'
                            
                        'Sportler'
                            
                        'Stadtpark'
                            
                        'Steg'
                            
                        'Stiglitz'
                            
                        'Streik'
                            
                        'Suedindien'
                            
                        'TNK-BP'
                            
                        'TUI'
                            
                        'Tagessieg'
                            
                        'Tarifkonflikt'
                            
                        'Thompson'
                            
                        'Trainer'
                            
                        'Unesco'
                            
                        'Vanessa'
                            
                        'Verlagsgruppe'
                            
                        'Versptungen'
                            
                        'Verwaltungsrat'
                            
                        'Volksabstimmungen'
                            
                        'Wedeler'
                            
                        'Wissenschaftsrat'
                            
                        'Won'
                            
                        'Yang'
                            
                        'Zeitfahren'
                        ); 
                        [FONT="Helvetica"]twitter.com/unset[/FONT]

                        Shitstorm Podcast – Wöchentliches Auskotzen

                        Kommentar


                        • Also die Liste ist wirklich cool, alles aktuelle Wörter, die in den Nachrichten der letzten Tage vorkommen

                          Ich kann da fast alles einordnen^^

                          Vielleicht könnte es ja auch als nächste Aufgabe ein Script geben, dass Nachrichtenseiten durchsucht und diese Wörter alle nach Themengebieten sortiert *gg*

                          naja, wenn ich es heute Abend mal schaffe, setze ich mich auf jeden fall mal an die "did you mean" Aufgabe....
                          signed oder unsigned... das ist hier die Frage

                          Kommentar


                          • Hier meine Lösung. Kannst dir aussuchen, ob der Vergleich mit der levenshtein, metaphone oder soundex-Funktion stattfinden soll. Liefern nicht immer die gleichen Ergebnisse, zum Beispiel findet der levenshtein bei der Eingabe "Carrrla" das Ergebnis "Carreras", während metaphone und soundex jeweils "Carolina" finden. Oder bei "dvb" findet levenshtein "Ort" anstatt "DVB-T". Darum finde ich die beiden Funktionen besser.
                            Falls ich die Aufgabe falsch verstanden haben sollte, bitte klär mich auf
                            Angehängte Dateien

                            Kommentar


                            • Bedingt. Die Funktion sollst du schreiben, und nicht auf vorhandene zurückgreifen
                              [FONT="Helvetica"]twitter.com/unset[/FONT]

                              Shitstorm Podcast – Wöchentliches Auskotzen

                              Kommentar


                              • Bedingt. Die Funktion sollst du schreiben, und nicht auf vorhandene zurückgreifen
                                Das erklärt so einiges ^^ Na mal schaun, ob ich da noch Zeit zu finde

                                Kommentar

                                Lädt...
                                X