Это, вероятно, не лучший способ решить эту проблему,
a = 1; b = 10; c = 0;
Position[#, Max@#] &@{a, b, c}
{a, b, c} = ReplacePart[{a, b, c}, % -> 5]
Было бы лучше определить исходные значения в виде списка abc = {1, 10, 0}
и затем заменить элемент max всписок.Как я заметил, мистер Волшебник только что сделал в своем ответе.
Вы также можете сделать что-то вроде
SetAttributes[ReplaceMax, HoldFirst]
ReplaceMax[list : {__Symbol}, val_] := Module[{pos},
pos = Flatten@Position[#, Max@Select[#, N[#] \[Element] Reals &]]&@list;
Do[Evaluate[(HoldPattern /@ Unevaluated@list)[[p]]] = val,
{p, pos}]]
Тогда
In[15]:= {a, b, c, d, e} = {1, 15, 6, 17 + I, x};
In[16]:= ReplaceMax[{a, b, c, d, e}, 5]
{a, b, c, d, e}
Out[17]= {1, 5, 6, 17 + I, x}