Перечислите все комбинации из 4 операторов и 4 чисел, затем проверьте их окончательное значение C # - PullRequest
0 голосов
/ 02 августа 2011

Я пытаюсь сделать решатель 24 (цель игры 24 - использовать +, -, *, /, чтобы добраться до числа 24)

Я достаточно уверен, что единственный способсделать это, используя метод грубой силы (попробуйте каждую комбинацию чисел с операторами между ними.

Чтобы исключить необходимость в скобках, я думаю, что размещение чисел также должно быть случайным.

Я хочу сделать это на C #.

Как мне это сделать? (Основной план, план ...)

1 Ответ

3 голосов
/ 02 августа 2011

Взято из: Google Codeplex

Алгоритм
1. Представьте 24 результата игры как двоичное дерево (если вы не знаете, что это, проверьте структуру данныхкнига первая).
2. Есть 3 типа бинарных ветвей.«D OP D», «P OP D» или «D OP P», «P OP P».В котором D - это цифра (целое число больше 1), P - указатель на другую нисходящую ветвь, а OP - оператор "+, - ,, /".В частности, «D OP D» должен находиться в листовой позиции дерева.
3. Сгенерировать все возможные деревья.И примените некоторую оптимизацию, например, элемент с двух сторон от «+» можно переключать, а «-, /» - нет.
4. Сгенерируйте все возможные перестановки из 4 цифр (4! = 24).И удалите те же копии.
5. Смешайте деревья и цифры перестановок, сделайте расчет, и мы получим результат!

...