tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von CPoly
  • 1 Beitrag von CPoly
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
399
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Chris_ist_online Chris_ist_online ist offline Mitglied
    Registriert seit
    Feb 2011
    Beiträge
    22
    Hey,

    ich hab keine Ahnung wie ich das machen soll/kann: Ich habe ein unbegrenzte Anzahl von Ziffern. Ich möchte dabei Systematisch alle möglichen Additions-Versuche machen.

    Bsp:

    Ich habe 3 versch. Zahlen:

    1
    3
    4

    Es soll folgendes probiert werden:

    1+3+4=
    1+3=
    1+4=
    3+4=
    ...

    bis man alles ausprobiert hat.


    ___

    Hat jemand eine Ahnung**** Probier jetzt schon seit genau 5 1/2 h auf einem Block, aber ich bin einfach nur fasziniert / ratlos / deprimiert / sauer bzw. genervt.

    Kann mir das jmd. zusammenbasteln**** ~ Soory für die doofe Anmache, aber ich kann wirklich nicht mehr

    Noch eine Zahl und der Bildschirm ist an der Wand
     

  2. #2
    CPoly CPoly ist offline Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Was du suchst ist die Potenzmenge deiner Eingangsmenge an Zahlen (Wobei Menge falsch ist, es dürfen ja auch doppelte enthalten sein).

    Ich hab auch eine Beispielimplementierung dafür in PHP gefunden, aber es will einfach nicht. Ich kann PHP nicht ausstehen und es mich nicht. Wenn du willst, mache ich schnell eine JavaScript Implementierung.
    Chris_ist_online bedankt sich. 

  3. #3
    Chris_ist_online Chris_ist_online ist offline Mitglied
    Registriert seit
    Feb 2011
    Beiträge
    22
    Hau her

    Vielen Dank... die php-Lösung wäre am besten, kannst ja einfach mal posten...

    (ich möchte nämlich die Potzenmenge in einer cloud berechnen lassen und da ist javascript unpassend)

    evtl. kann man ja das JS noch "verwerten"


    Gruß

    PS: Danke, Danke, Danke******
     

  4. #4
    CPoly CPoly ist offline Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Zitat Zitat von Chris_ist_online Beitrag anzeigen
    Hau her

    Vielen Dank... die php-Lösung wäre am besten, kannst ja einfach mal posten...
    http://www.janitor61.com/?p=17

    Die Summenbildung ist ja dann nur noch das durchlaufen der Arrays.

    Zitat Zitat von Chris_ist_online Beitrag anzeigen
    (ich möchte nämlich die Potzenmenge in einer cloud berechnen lassen und da ist javascript unpassend)
    Sag das nicht.
    http://nodejs.org/
    http://www.nodejscloud.com/

    (Nur beispielshaft. NodeJS ist schon sehr speziell, es gibt auch anderen JavaScript Serversysteme)

    Und ich könnte Wetten V8 schlägt den PHP Interpreter


    Mit meiner JS Lösung komme ich gerade nicht wirklich weiter. Ich wollte eigentlich mit Bitoperationen arbeiten, weil die Permutation sind ja einfach alle einsen, wenn man binär hochzählt. Beispiel

    Array = [1,2,3]

    Potenzmenge:
    000 : []
    001 : [3]
    010 : [2]
    011 : [2,3]
    100 : [1]
    101 : [1,3]
    110 : [1,2]
    111 : [1,2,3]

    Aber funktionieren tut es bisher nicht. Naja, ich hoffe die PHP Lösung funktioniert für dich.
    Chris_ist_online bedankt sich. 

  5. #5
    Chris_ist_online Chris_ist_online ist offline Mitglied
    Registriert seit
    Feb 2011
    Beiträge
    22
    ähm. also die Eingabe der Daten ist klar, aber die Ausgabe nicht?!

    PHP-Code:
    $in = array(1,2,3);
    function 
    powerSet($in,$minimumNumber 1) {
       
    $count count($in);
       
    $members pow(2,$count);
       
    $return = array();
       for (
    $i 0$i $members$i++) {
          
    $b sprintf("%0".$count."b",$i);
          
    $out = array();
          for (
    $j 0$j $count$j++) {
             if (
    $b{$j} == '1'$out[] = $in[$j];
          }
          if (
    count($out) >= $minimumNumber) {
             
    $return[] = $out;
          }
       }
       return 
    $return;

    EDIT:

    Vorher( vor dem Thread), hab ich mit folgendem Schlamassel rumgespielt:

    PHP-Code:
    $in "1,2,3,4,5";
    //Zerstückeln in Happen ;-)
    $pieces explode(","$in);
    $max_anzahl substr_count($in,',');

    $count 0//zählt die aktuelle Möglichkeit
    $count2 0//zählt die vorrangegangen $pieces

    $array_spiel $pieces[0];

    while(
    $count = (pow(2$max_anzahl))) //Mach das solange bis die Maximalen Möglichkeiten ausgeschöpft sind :)
    {
    $array_spiel $array_spiel $array_spiel[$count2];
    echo 
    $array_spiel;
    $count2++;

    WARNUNG: NICHT AUSFÜHREN --> Endlosschleife
     

  6. #6
    CPoly CPoly ist offline Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Im Kommentar über der Funktion steht doch, wie die Ausgabe aussieht. Und zwar ein zweidimensionales Array. Also ein Array von Arrays. Und von jedem dieser Arrays kannst du jetzt die Summe berechnen.

    Hab die Funktion nochmal kopiert und jetzt tut mein code...

    PHP-Code:
    function powerSet($in,$minimumNumber 1) {
        
    $count count($in);
        
    $members pow(2,$count);
        
    $return = array();
        for (
    $i 0$i $members$i++) {
            
    $b sprintf("%0".$count."b",$i);
            
    $out = array();
            for (
    $j 0$j $count$j++) {
                if (
    $b{$j} == '1'$out[] = $in[$j];
            }
            if (
    count($out) >= $minimumNumber) {
                
    $return[] = $out;
            }
        }
        return 
    $return;
    }


    $zahlen = array(6,5,4,3);
    $potenzmenge powerSet($zahlen);

    /*
        Ausgabe der Summen
    */
    for($i 0$i count($potenzmenge); $i++) {
        
    $summe 0;

        for(
    $k 0$k count($potenzmenge[$i]); $k++) {
            
    $summe += $potenzmenge[$i][$k];
        
            echo 
    $potenzmenge[$i][$k];
        
            if(
    $k count($potenzmenge[$i]) - 1)
                echo 
    ' + ';
        }

        echo 
    ' = ';
        echo 
    $summe;
        echo 
    '<br>';

    Ausgabe

    3 = 3
    4 = 4
    4 + 3 = 7
    5 = 5
    5 + 3 = 8
    5 + 4 = 9
    5 + 4 + 3 = 12
    6 = 6
    6 + 3 = 9
    6 + 4 = 10
    6 + 4 + 3 = 13
    6 + 5 = 11
    6 + 5 + 3 = 14
    6 + 5 + 4 = 15
    6 + 5 + 4 + 3 = 18
     

Ähnliche Themen

  1. Antworten: 9
    Letzter Beitrag: 16.04.10, 00:00
  2. Antworten: 3
    Letzter Beitrag: 11.03.10, 23:08
  3. unbestimmte Anzahl Arrays addieren ?
    Von mrepox im Forum PHP
    Antworten: 9
    Letzter Beitrag: 03.09.06, 11:16
  4. Alle möglichen Kombinationen
    Von Snape im Forum Algorithmen & Datenstrukturen mit Java
    Antworten: 3
    Letzter Beitrag: 21.09.05, 12:07
  5. unbestimmte Anzahl an Formularelementen addieren
    Von pxlArtizzt im Forum Javascript & Ajax
    Antworten: 4
    Letzter Beitrag: 03.09.03, 11:27