permutation

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

  • permutation

    ich habe eine problem meine rekusion geht irgendwie nicht aber finde auch denn fehler nicht
    es schaut so aus das du funktion irgendwo abbricht sie gib auch kein variablen aus
    PHP-Code:
    <?
    include('mysql');
    $start    = "1";
    $end    = "3";
    $source    ='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789öäüÜÄÖß ';
    $array    = array();
    for($i=0;$i<strlen($source);$i++)
    {n$array[]=$source[$i]; }
    $now=microtime();
    permutation($array,'',$start);
    $xi = 0;

    function permutation($array,$now,$child)
    {
        if($child==0)
          {
             if($GLOBALS['xi']<10000) $GLOBALS['xi']++;
             else
             {
                  $GLOBALS['xi']=0;
                  echo timediff($GLOBALS['now']).' ';
                  $GLOBALS['now']=microtime();
             }
            
            mysql_query("INSERT INTO .......  ( '', '".$now."', ".md5($now)."' );");
            echo $now;
            return;
        }
        for($i=0;$i<count($ar);$i++)
        {if(strlen($now)==0) echo "\n".$array[$i].' ';
         permutation($array,$now.$array[$i],$child-1);}
    }
    function timediff($von)
    {    $y=explode(' ',microtime());
        $x=explode(' ',$von);
        $a=(int)$x[1]+(float)$x[0];
        $b=(int)$y[1]+(float)$y[0];
        $c=round($b-$a,4);
        return $c;}
    ?>
    Zuletzt geändert von Ganjaaa; 25.07.2006, 23:19.

  • #2
    super fehlerbeschreibung und brich bitte den code um.

    Kommentar


    • #3
      sry wusste leider nicht wie ich das kürzer schreiben kann da es um die ganze function geht denn form anhang habe ich schon entfernt
      und das problem ist das nichts geht irgendwo muss die function abrechen aber ich finde nicht wo

      Kommentar


      • #4
        Hast du
        PHP-Code:
        error_reporting(E_ALL); 
        ?
        Wenn ich das sehe
        PHP-Code:
        {n$array[]=$source[$i]; } 
        dann wohl eher nicht ?

        Gruss

        tobi
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          arg nein das war weil ich ihn gebrochen hatte also 1 fehler hatte ich gefunden
          PHP-Code:
          }
              for(
          $i=0;$i<count($array);$i++)
                {
                  if(
          strlen($now)==0
          da hatte ich $ar anstelle von $array geschrieben aber nun kommt bei mir
          a
          Notice: Undefined index: xi in /srv/www/htdocs/web1003/html/Center/md52.php on line 22

          Notice: Undefined index: xi in /srv/www/htdocs/web1003/html/Center/md52.php on line 24
          a b b c c d d e e f f g g h h i i j j k k l l m
          nun trägt er zwar ein aber unterbricht sobalt 1 array durchgelaufen ist

          Kommentar


          • #6
            kleiner tipp: permutationen sind mit mysql ganz simpel.

            Code:
            CREATE TABLE `p` (
              `c` char(1) NOT NULL,  -- könnte auch varbinary(1) sein, für groß-klein etc.
              UNIQUE KEY `c` (`c`)
            ) ;
            
            -- a-d eintragen, in deinem fall a-zA-Z ... 
            INSERT INTO `p` (`c`) VALUES ('a'),
            ('b'),
            ('c'),
            ('d');
            
            
            -- und jetzt als beispiel alle dreierkombinationen
            SELECT CONCAT(a.c, b.c, c.c) as perm FROM p AS a, p AS b, p AS c;
            aufpassen, immer vorher rechnen was die datenbank dafür rödeln muss, damit bringt man sehr schnell server zum absturz.


            und beim nächsten mal ordentlich einrücken und code formatieren. wir spucken dir ja auch nicht vor die füße.

            grüße
            axo

            Kommentar


            • #7
              dann noch count($ar) ?

              und was macht das eigentlich? bildet alle Paare von 'aa' über 'ab', 'ac' bis 'ÖÖ' und dann md5. Warum das eine Permutation heisst ist ein Rätsel. und warum es etwas rekursives sein muss auch (ausser es sei verkürzt).

              gegen dein $xi Problem hilft
              global $xi;
              (am Anfang der Funktion)

              es wird also 4761 Paare geben (beabsichtigt, siehe nächster bug), der Zähler auf 10000 wird nicht erreicht.

              und versuche mal $start=2 zu setzen dafür. mit $start=1 schreibt es tatsächlich nur die Permutationen a b c d e f g......Ö und space in die Datenbank.
              Zuletzt geändert von h31ss; 26.07.2006, 00:26.

              Kommentar


              • #8
                wird wohl ein kleiner password-cracker sein, der
                http://en.wikipedia.org/wiki/Md5 noch nicht gelesen hat, insbesondere den letzten abschnitt.

                Kommentar

                Lädt...
                X