Problem mit eindeutiger Zahlenfolge

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

  • Problem mit eindeutiger Zahlenfolge

    Hallo,

    folgendes Problem bereitet mir seit einigen Stunden Kopfzerbrechen.

    Ich habe 5 Zahlen aus 10.

    1 2 6 9 10
    2 4 5 9 10

    Nun soll die Zahlenfolge ausgewählt werden, welche den höchsten Zahlenreihenfolge hat, allerdings habe ich keiene möglichkeit die beiden miteinander zu vergleichen.

    Ausgewählt werden sollte die erste Zahlenfolge, weil 10 und 9 bei beiden gleich sind und in der ersten Zahlenfolge die 6 höher als die 5 ist.

    Wenn ich nun einfach nur die einzelnen werte miteinander addiere, kommt bei dem ersten 28 heraus und bei dem zweiten 30, also ziel verfehlt.

    Hat irgendjemand einen Vorschlag wie ich eindeutig sagen kann, der erste wert ist höherwertig als der zweite, ohne allerdings die zwei miteinander zu vergleichen?
    Am besten wäre es, wenn am schluss ein einzelner Zahlenwert herauskommt, der aussagt welche Zahlenfolge höherwertig ist.

    lg

  • #2
    Re: Problem mit eindeutiger Zahlenfolge

    Ich denke ohne sie zu vergleichen wirst du nicht weit kommen...

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      Re: Problem mit eindeutiger Zahlenfolge

      Original geschrieben von Drama
      Hallo,

      folgendes Problem bereitet mir seit einigen Stunden Kopfzerbrechen.

      Ich habe 5 Zahlen aus 10.

      1 2 6 9 10
      2 4 5 9 10
      kette die Zahlen, sortiert nach der Grösse, zusammen, sogar als string und mit Abstand, dh im konkreten Fall
      $zahlA='10 09 05 04 02' vs. $zahlB='10 09 06 02 01'

      Das Ergänzen mit Vornullen macht man mit sprintf() oder sonst 'von Hand'. Damit bekommst Du EINEN string-wert anstatt des arrays. Vergleichen musst du nachher die strings. Als INT ist der Zahlenbereich 32 bit nicht ausreichend, als FLOAT vermutlich auch nicht.

      Kommentar


      • #4
        Re: Problem mit eindeutiger Zahlenfolge

        Original geschrieben von Drama
        Hat irgendjemand einen Vorschlag wie ich eindeutig sagen kann, der erste wert ist höherwertig als der zweite, ohne allerdings die zwei miteinander zu vergleichen?
        Am besten wäre es, wenn am schluss ein einzelner Zahlenwert herauskommt, der aussagt welche Zahlenfolge höherwertig ist.
        komisches problem
        selbst wenn du am ende einen einzelnen zahlenwert hast, musst du ja doch beide zahlenwerte vergleichen. also kannst du doch gleich beide zahlenfolgen vergleichen - versethe ich nicht so recht.

        aber nun ja: wenn du beide zahlenfolgen rückwärts:
        109621
        >
        109542
        notierst, kannst du den "wert" bestimmen.
        sonderfall ist die 10 - am besten alle zahlen vorher zahl-1, damit wird die 10 zur 9

        Kommentar


        • #5
          zahl-1: tiptopper vorschlag

          Kommentar


          • #6
            Original geschrieben von jhaase
            zahl-1: tiptopper vorschlag
            eher aus der not/faulheit geboren - fand es zu umständlich die 10 gesondert zu behandeln
            aber was du sagst: "Als INT ist der Zahlenbereich 32 bit nicht ausreichend" ist nich korrekt: maximale zahl aus ops bsp. 1010101010 < 2^32 (4294967296)

            Kommentar


            • #7
              hm, die 10 macht eigentlich gar keine probleme, liegt ja alles noch im int-bereich und der werterang wird auch in jedem fall beibehalten:
              PHP-Code:
              function getValue($numbers)
               {
                
              rsort($numbers);
                return 
              implode(''$numbers);
               }

              $numbers1=array(126910);
              $numbers2=array(245910);

              echo 
              'Ziffern_1: '.implode(','$numbers1).' Wert: '.getValue($numbers1);
              echo 
              '<br />';
              echo 
              'Ziffern_2: '.implode(','$numbers2).' Wert: '.getValue($numbers2); 
              Ausgabe:
              Code:
              Ziffern_1: 1,2,6,9,10 Wert: 109621
              Ziffern_2: 2,4,5,9,10 Wert: 109542
              Zuletzt geändert von 3DMax; 20.08.2006, 05:39.

              Kommentar


              • #8
                - im letzten posting editiert ...
                Zuletzt geändert von 3DMax; 20.08.2006, 05:42.

                Kommentar


                • #9
                  Hier ist Nachts ja richtig was los

                  Die aneinanderkettung klappt, Danke euch!

                  Kommentar


                  • #10
                    Original geschrieben von Drama
                    Hier ist Nachts ja richtig was los

                    Die aneinanderkettung klappt, Danke euch!
                    Du hast einfach noch nicht 10,8,7,6,5 gegen 9,6,4,3,2 versucht. Mit den obigen Verkettungen kommt das nämlich nicht gut heraus.

                    Es ist besser, alle Zahlen -1 zu nehmen und dann eine INT zu machen, das bleibt im INT-Zahlenbereich. Oder für den String-Bereich müsstest Du die 10 durch eine 'A' ersetzen, dann geht es auch wieder gut.

                    Kommentar


                    • #11
                      Original geschrieben von jhaase
                      Du hast einfach noch nicht 10,8,7,6,5 gegen 9,6,4,3,2 versucht. Mit den obigen Verkettungen kommt das nämlich nicht gut heraus.

                      Es ist besser, alle Zahlen -1 zu nehmen und dann eine INT zu machen, das bleibt im INT-Zahlenbereich. Oder für den String-Bereich müsstest Du die 10 durch eine 'A' ersetzen, dann geht es auch wieder gut.
                      Doch das geht trotzdem, weil 96.432 immernoch kleiner als 108.765 ist Und darum ging es mir ja nur ... das man einfach eindeutig sieht der eine ist kleiner als der andere ...
                      mit der aneinanderkettung ist der höhere zahlenwert immer der größte egal wie die nachfolgenden Zahlen sind. habe nun alle zahlen mit einer funktion zweistellig gemacht so, dass es immer 9-10 stellige zahlen sind, habe auch schon eine ausgiebige Testreihe gemacht, wobei immer ein zufriedenstellendes Resultat heraus kam

                      Kommentar

                      Lädt...
                      X