Вы можете преобразовать правила, возвращаемые Solve
в списки, используя ReplaceAll
или его краткую форму /.
следующим образом
Solve[x == 1 && 2 >= y >= 1, {x, y}, Integers] /. Rule[a_, b_] -> b
Это создает список списков: {{1, 1}, {1, 2}}
.Чтобы получить результаты в желаемом формате, вы можете передать этот список через функцию, которая принимает пару {a,b}
и возвращает {x->a,y->b}
.Функция типа
{x -> #[[1]], y -> #[[2]]} &
выполняет именно эту трансформацию.Комбинируя два шага
solutionlist = (Solve[x == 1 && 2 >= y >= 1, {x, y}, Integers] /.
Rule[a_, b_] -> b ) // {x -> #[[1]], y -> #[[2]]} &
, вы получите
{x -> {1, 1}, y -> {1, 2}}
для вашего примера.
Чтобы использовать значения из решения, вы можете использовать
{xlist, ylist} = {x, y} /. solutionlist
Проверка
?xlist
дает
РЕДАКТИРОВАТЬ: для удаления дубликатов измените функцию {x -> #[[1]], y -> #[[2]]} &
на
{x -> Union@#[[1]], y -> Union@#[[2]]} &