@Wet_Dumplings

Как осуществить перебор арифметической формулы произвольной длины?

Привет!

Необходимо перебрать все формулы произвольной длины P.
В формуле используются константы 0, 1, 2, переменная X, а также операции -, +, * и скобки.
"длина формулы" это число операций т.е. если размер № формулы будут такие:
1.) 0 + 1; x * 2
4.) x * x + 2 * x + 1; (1 + x) * 1 * 2 + 0

Это как осуществить =) ?

з.ы. видимо, неправильно запрос задавал т.к. не нашел похожего от слова совсем (если конечно не считать "комбинацией без повторов" двух объявленных массивов)
  • Вопрос задан
  • 424 просмотра
Решения вопроса 1
shai_hulud
@shai_hulud
Тебе нужен Cartesian product этих можеств.

public bool onlyOneVariable(params string[] values) => values.Count(char.IsLetter) == 1;

from num1 in new[] { '0', '1', '2', 'X' }
from num2 in new[] { '0', '1', '2', 'X' }
from op1 in new[] { '-', '+', '*' }
where onlyOneVariable(num1, num2)
select $"{num1} {op1} {num2}";


Пример выполнения: https://repl.it/repls/TrustyAptInstitution
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы