Hallo zusammen,
Man speichert Argumente und Werte in einer Tabelle
In[1]:= Remove[wtab];
wtab =
{(* 1 *) {{5, 1, 2, 3, 5}, 10},
(* 2 *) {{6, 4, 2, 3, 4}, 2},
(* 3 *) {{3, 4, 5, 1, 6}, 6},
(* 4 *) {{4, 5, 5, 6, 4}, 8},
(* 5 *) {{5, 3, 4, 3, 5}, 12},
(* 6 *) {{4, 1, 6, 3, 6}, 2},
(* 7 *) {{2, 6, 6, 2, 1}, 0},
(* 8 *) {{3, 5, 5, 5, 6}, 14},
(* 9 *) {{6, 3, 5, 3, 3}, 10},
(* 10 *) {{5, 5, 3, 3, 5}, 16},
(* 11 *) {{4, 4, 5, 3, 2}, 6},
(* 12 *) {{3, 1, 6, 1, 4}, 2}
};
Um eine Funktion zu finden, kann man den Ansatz machen, dass die Argumente
linear an der Herstellung des Wertes beteiligt sind. Daraufhin sollte man
eine 12 x 12 reguläre Matrix konstruieren, deren erste 5 Spalten die geg.
Argumente darstellen. Weitere 7 Spalten sind zu füllen.
Dazu helfen folgende Beobachtungen:
(1) die Argumente liegen in [1, 6]
(2) die Reihenfolge der Argumente spielt keine Rolle, da in der
Wertetabelle keine Beispiele sind, bei denen sich die Argumente nur bzgl.
der Reihenfolge unterscheiden.
Um die Unabhängigkeit von der Reihenfolge zu implementieren, fügt man die
Anzahl eines Arguments auf seiner Position hinzu und hat 5 + 6 = 11
Spalten. Die letzte
Spalte enthält 12 Parameter, um eine reguläre Matrix zu erhalten: eine
mögliche Eingabe ist die Anzahl verschiedener Zahlenwerte in den
Argumenten, mit anderen Worten
In[4]:= LinearSolve[Flatten /@ ({Identity[#], Table[Count[#, j], {j, 1,
6}], Length[Union[#]]}& /@ First[#]), Last[#]]&[Transpose[wtab]]
Out[4]= {0, 0, 0, 0, 0, 0, 0, 2, 0, 4, 0, 0}
Somit besteht die gesuchte Funktion darin, die Anzahl der Dreien unter den
Argumenten mit 2 und die Anzahl der Fünfen mit 4 zu multiplizieren:
In[5]:= Clear[f];
f[x__Integer /; Length[{x}] == 5] := 2 (Count[#, 3] + 2 Count[#, 5])&[{x}]
In[16]:= Equal /@ MapAt[f[Sequence @@ #]&, wtab, Table[{o, 1}, {o,
Length[wtab]}]]
Out[16]= {True, True, True, True, True, True, True, True, True, True,
True, True}
Gruss
Udo.
konstruieren Sie eine ganzzahlige Funktion von 5 ganzzahligen positiven
Argumenten, die folgende Werte annimmt:
f[5, 1, 2, 3, 5] = 10
f[6, 4, 2, 3, 4] = 2
f[3, 4, 5, 1, 6] = 6
f[4, 5, 5, 6, 4] = 8
f[5, 3, 4, 3, 5] = 12
f[4, 1, 6, 3, 6] = 2
f[2, 6, 6, 2, 1] = 0
f[3, 5, 5, 5, 6] = 14
f[6, 3, 5, 3, 3] = 10
f[5, 5, 3, 3, 5] = 16
f[4, 4, 5, 3, 2] = 6
f[3, 1, 6, 1, 4] = 2