hilfe!!! suche schleifenform! dringend!

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

  • hilfe!!! suche schleifenform! dringend!

    hallo zusammen!

    ich brauche eine schleifenvariante die mir ein array mit zahlen füllt und dabei folgende kriterien erfüllt:

    ein array mit sieben indizes (0-6),
    es können nur zahlen zwischen 0 und 10 vorkommen,
    die summer der einzelnen arrayelemente muß 10 sein,

    alle möglichen kombination die diese kriterien erfüllen sollen in das array eingetragen werden und innerhalb der schleife soll dies dann ausgewertet werden können...

    also hier ein kurzes beispiel um es zu veranschaulichen (die einzelenen elemente des arrays):

    10, 0, 0, 0, 0, 0, 0
    9, 1, 0, 0, 0, 0, 0
    9, 0, 1, 0, 0, 0, 0
    9, 0, 0, 1, 0, 0, 0
    ...
    8, 2, 0, 0, 0, 0, 0
    ...
    8, 1, 1, 0, 0, 0, 0
    ...
    1, 0, 0, 0, 8, 1, 0,
    ...
    1, 1, 2, 1, 0, 3, 2

    usw...

    ich hab mir jetz stundenlang den kopf drüber zerbrochen das zu realisieren und auch probiert aber es kam nix bei raus....

    ich hoffe es kann mir jemand helfen

    mfg irieill

  • #2
    also lass dir doch erstmal deine 10^6 varianten in dein array füllen...
    danach kannste ja immer noch mit einer schleife die anordnungen killen, die ne höhere quersummer als 10 haben...

    edit: achja sollen es geordnete oder ungeordnete permutationen sein?
    Zuletzt geändert von BugBite; 09.08.2006, 04:11.

    Kommentar


    • #3
      PHP-Code:
      $i 7;
      while(
      $i 10) {
        
      $array[0] = rand('0','10');
        
      $array[1] = rand('0','10');
        
      $array[2] = rand('0','10');
        
      $array[3] = rand('0','10');
        
      $array[4] = rand('0','10');
        
      $array[5] = rand('0','10');
        
      $array[6] = rand('0','10');
        
      $i $array[0]+$array[1]+$array[2]+$array[3]+$array[4]+$array[5]+$array[6];

      Dauert aber ewig.

      Kommentar


      • #4
        PHP:--------------------------------------------------------------------------------
        $i = 7;
        [color=red]while[/color]($i = 10) {
        $array[0] = rand('0','10');
        $array[1] = rand('0','10');
        $array[2] = rand('0','10');
        $array[3] = rand('0','10');
        $array[4] = rand('0','10');
        $array[5] = rand('0','10');
        $array[6] = rand('0','10');
        $i = $array[0]+$array[1]+$array[2]+$array[3]+$array[4]+$array[5]+$array[6];
        }
        while steht doch übersetzt für solange/während...???
        solange $i==10 ist macht der das aber du hast doch ne zeile vorher die variable i auf 7 gesetzt warum sollte die schleife überhaupt starten?

        und müssten nicht zwei gleichheitszeichen dasein
        weil du die werte ja vergleichen willst
        und nicht $i den wert 10 geben möchtest?

        hoffentlich hab ich das jetzt richtig verstanden
        Widersprich nie einer Frau, warte bis Sie es selbst tut.

        Kommentar


        • #5
          verzeihung, wozu brauchst du so einen overkill??
          hast du eine vorstellung davon, WIEVIELE solche permutationen es gibt?

          für die zeile
          Code:
          10, 0, 0, 0, 0, 0, 0
          gibt es 7 möglichkeiten.
          für eine zeile mit 2 verschiedenen ziffern, etwa
          Code:
          9, 1, 0, 0, 0, 0, 0
          gibt es 7*6 = 42 möglichkeiten. mal 9 ziffern ergibt 378 möglichkeiten. und so weiter (die zahl der möglichkeiten wird stark ansteigen).

          wenn du alle möglichkeiten betrachtest - dann mal viel spaß.
          also überlege dir, ob sich die aufgabe nicht anders lösen lässt.

          Kommentar


          • #6
            und übrigens: es gibt echt gute generatoren für wortlisten, die man für bruteforces nutzt ;D

            Kommentar


            • #7
              und übrigens: es gibt echt gute generatoren für wortlisten, die man für bruteforces nutzt ;D
              wortlisten? bruteforces? was ist das? wie sollte mir das weiterhelfen?

              hast du eine vorstellung davon, WIEVIELE solche permutationen es gibt?
              ja die hab ich - und ich weiß was das für ein rechenaufwand ist - hab ich aber eine solche schleife verkürzt sich die zeit die ich mit meinem bisherigen modell habe um mehr als das 5fache!!!

              also überlege dir, ob sich die aufgabe nicht anders lösen lässt.
              geht nich anders - ist eine simulation in der alle diese möglichkeiten vorkommen!

              $i = 7;
              while($i == 10) {
              $array[0] = rand('0','10');
              $array[1] = rand('0','10');
              $array[2] = rand('0','10');
              $array[3] = rand('0','10');
              $array[4] = rand('0','10');
              $array[5] = rand('0','10');
              $array[6] = rand('0','10');
              $i = $array[0]+$array[1]+$array[2]+$array[3]+$array[4]+$array[5]+$array[6];
              }
              nützt mir in diesem falle garnix! die schleife bricht ab sobald die quersumme nicht gleich 10 ist - das sollte schon großer zufall sein dort alle möglichkeiten reinzubekommen...

              danke erstmal an alle die bisher was geschrieben haben!

              bitte überlegt weiter an einer variante

              Kommentar


              • #8
                PHP-Code:
                for($a=0;$a<=10;$a++){
                 for(
                $b=0;$b<=10;$b++){
                  for(
                $c=0;$c<=10;$c++){
                   for(
                $d=0;$d<=10;$d++){
                    for(
                $e=0;$e<=10;$e++){
                     for(
                $f=0;$f<=10;$f++){
                      if((
                $a+$b+$c+$d+$e+$f)==10){
                       
                $my_array[] = array($a$b$c$d$e$f); 
                      }
                     }
                    }
                   }
                  }
                 }
                }
                print_r($my_array); 
                ergibt 3003 Resultate und wofür du die brauchst ist mir unerklährlich

                mit rand() wiederholen sich Zahlen also dauert das um "Jahre" länger. (ich hoffe ich habs richtig verstanden...)

                Kommentar


                • #9
                  Original geschrieben von jmc
                  PHP-Code:
                  for($a=0;$a<=10;$a++){
                   for(
                  $b=0;$b<=10;$b++){
                    for(
                  $c=0;$c<=10;$c++){
                     for(
                  $d=0;$d<=10;$d++){
                      for(
                  $e=0;$e<=10;$e++){
                       for(
                  $f=0;$f<=10;$f++){
                        if((
                  $a+$b+$c+$d+$e+$f)==10){
                         
                  $my_array[] = array($a$b$c$d$e$f); 
                        }
                       }
                      }
                     }
                    }
                   }
                  }
                  print_r($my_array); 
                  ergibt 3003 Resultate und wofür du die brauchst ist mir unerklährlich

                  mit rand() wiederholen sich Zahlen also dauert das um "Jahre" länger. (ich hoffe ich habs richtig verstanden...)
                  perfekt - habs noch nicht durchgespielt sollte aber stimmen... man man man ich bin ja so ein kompliziert-denker!!!! ist doch total einfach!!!

                  ds jmc!!!

                  edit : ergibt aber 8008 resultate
                  Zuletzt geändert von irieill; 09.08.2006, 14:09.

                  Kommentar


                  • #10
                    8000 gesuchte werte bei einer million durchläufe - wo kann man denn so etwas gebrauchen?

                    Kommentar

                    Lädt...
                    X