(Mir ist kein passenderer Topic eingefallen.)
Hallo Leute,
im Grunde ist es ein recht einfaches Prinzip, aber ich komme einfach auf keine sinnvolle Lösung.
Ich habe X Variablen mit festgelegten Werten. Die erste Variable hat den Wert 1, die zweite den Wert 2, die dritte den Wert 4, die vierte den Wert 8 usw. (Immder eine Verdopplung der vorangegangene Variable.)
Um das Ganze etwas einfacher zu halten, gehen wir mal davon aus, dass wir Anfangs nur 4 Variablen haben:
var A = 1
var B = 2
var C = 4
var D = 8
Wenn man nun X dieser Variablen kombiniert (wobei jede Variable nur einmal vorkommen darf) erhält man durch Addition der Werte das Ergebnis Y.
Also z.B.:
$Y=$A+$C; $Y=5
$Y=$C+$D+$B; $Y=14
usw.
Egal wie man kombiniert, jede Kombination (var Y) hat einen eindeutigen Endwert. (Durch die Verdopplung der Variablenwerte bei der Definition.)
Somit gibt es in diesem Fall (4 Ursprungsvariablen) insgesamt 15 Kombinationsmöglichkeiten.
Das sollte eigentlich verständlich sein. Kommen wir also zum Problem:
Ich benötige eine Funktion, die das Ganze rückwärts macht.
Also z.B.:
Wenn ich also für Y den Wert 7 übergebe, muss ich als Ergebnis z.B. ein Array erhalten (oder sonst etwas) $arr('A','B','C')
Oder wenn ich 9 übergebe dann eben $arr('A','D')
Die Funktion soll praktisch ermitteln, aus welchen Variablen der Wert Y gebildet wurde. (Und da es für jeden Y-Wert eine einzige Kombinationsmöglichkeit gibt ...)
Bis jetzt habe ich das ganze in einer Select-Anweisung laufen. Bei 4 Ursprungsvarialben ist das noch nicht so der Akt, da es ja nur 15 Möglichkeiten und somit 15 Case-Fälle gibt. Wenn jedoch ein, zwei oder drei weitere Variablen hinzukommen, wird das gigantisch. (Bei 5 Variablen sind es 31 Möglichkeiten, bei 6 sind es 63 und bei 7 bereits 127 Möglichkeiten.)
Die Funktion sollte also möglichst universell sein. Jedoch begnüge ich mich natürlich auch mit einer Lösung für nur 4 Variablen; die umzuschreiben müsste mir eigentlich gelingen.
Ach ja, die Werte für var A, var B, var C, var D (usw.) sind der Funktion natürlich bekannt.
Vielen Dank schon mal im Vorraus,
DasD
Hallo Leute,
im Grunde ist es ein recht einfaches Prinzip, aber ich komme einfach auf keine sinnvolle Lösung.
Ich habe X Variablen mit festgelegten Werten. Die erste Variable hat den Wert 1, die zweite den Wert 2, die dritte den Wert 4, die vierte den Wert 8 usw. (Immder eine Verdopplung der vorangegangene Variable.)
Um das Ganze etwas einfacher zu halten, gehen wir mal davon aus, dass wir Anfangs nur 4 Variablen haben:
var A = 1
var B = 2
var C = 4
var D = 8
Wenn man nun X dieser Variablen kombiniert (wobei jede Variable nur einmal vorkommen darf) erhält man durch Addition der Werte das Ergebnis Y.
Also z.B.:
$Y=$A+$C; $Y=5
$Y=$C+$D+$B; $Y=14
usw.
Egal wie man kombiniert, jede Kombination (var Y) hat einen eindeutigen Endwert. (Durch die Verdopplung der Variablenwerte bei der Definition.)
Somit gibt es in diesem Fall (4 Ursprungsvariablen) insgesamt 15 Kombinationsmöglichkeiten.
Das sollte eigentlich verständlich sein. Kommen wir also zum Problem:
Ich benötige eine Funktion, die das Ganze rückwärts macht.
Also z.B.:
PHP-Code:
function MachDas($y)
{
$erg=blah blah blah;
return $erg;
}
Oder wenn ich 9 übergebe dann eben $arr('A','D')
Die Funktion soll praktisch ermitteln, aus welchen Variablen der Wert Y gebildet wurde. (Und da es für jeden Y-Wert eine einzige Kombinationsmöglichkeit gibt ...)
Bis jetzt habe ich das ganze in einer Select-Anweisung laufen. Bei 4 Ursprungsvarialben ist das noch nicht so der Akt, da es ja nur 15 Möglichkeiten und somit 15 Case-Fälle gibt. Wenn jedoch ein, zwei oder drei weitere Variablen hinzukommen, wird das gigantisch. (Bei 5 Variablen sind es 31 Möglichkeiten, bei 6 sind es 63 und bei 7 bereits 127 Möglichkeiten.)
Die Funktion sollte also möglichst universell sein. Jedoch begnüge ich mich natürlich auch mit einer Lösung für nur 4 Variablen; die umzuschreiben müsste mir eigentlich gelingen.
Ach ja, die Werte für var A, var B, var C, var D (usw.) sind der Funktion natürlich bekannt.
Vielen Dank schon mal im Vorraus,
DasD
Kommentar