2Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
399
399
EMPFEHLEN
-
10.02.11 19:47 #1
- 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
-
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.
-
10.02.11 20:40 #3
- 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******
-
http://www.janitor61.com/?p=17
Die Summenbildung ist ja dann nur noch das durchlaufen der Arrays.
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.
-
10.02.11 21:54 #5
- Registriert seit
- Feb 2011
- Beiträge
- 22
ähm. also die Eingabe der Daten ist klar, aber die Ausgabe nicht?!
EDIT: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;
}
Vorher( vor dem Thread), hab ich mit folgendem Schlamassel rumgespielt:
WARNUNG: NICHT AUSFÜHREN --> EndlosschleifePHP-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++;
}
-
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...
AusgabePHP-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>';
}
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
-
Alle möglichen Kombinationen aus einem Zeichensatz - Verbesserungsvorschläge?
Von Kai008 im Forum JavaAntworten: 9Letzter Beitrag: 16.04.10, 00:00 -
Alle möglichen Kombinationen mit festen Werten
Von Daywood im Forum PHPAntworten: 3Letzter Beitrag: 11.03.10, 23:08 -
unbestimmte Anzahl Arrays addieren ?
Von mrepox im Forum PHPAntworten: 9Letzter Beitrag: 03.09.06, 11:16 -
Alle möglichen Kombinationen
Von Snape im Forum Algorithmen & Datenstrukturen mit JavaAntworten: 3Letzter Beitrag: 21.09.05, 12:07 -
unbestimmte Anzahl an Formularelementen addieren
Von pxlArtizzt im Forum Javascript & AjaxAntworten: 4Letzter Beitrag: 03.09.03, 11:27





Zitieren


Login






[PHP][Snippet] Array zu XML konvertieren