列出 4 个运算符和 4 个数字的所有组合,然后测试它们的最终值 C#

发布于 2024-11-27 13:16:39 字数 170 浏览 1 评论 0原文

我正在尝试制作一个 24 解算器(游戏 24 的目标是使用 +、-、*、/ 来得到数字 24)

我相当有信心做到这一点的唯一方法是使用蛮力方法(尝试每个数字的组合以及它们之间的运算符

,我认为数字的放置也应该是随机的,

我应该如何做呢

? (基本纲要、计划……)

I'm trying to make a 24 solver (the game 24's objective is to use +,-,*,/ to get to the number 24)

I'm reasonably confident that the only way to do this is using a brute force method (try each combination of the numbers with the operators in between them.

To eliminate the need for parenthesis, I think the number placement should also be randomized.

I want to do this in C#.

How should I go about doing this?
(basic outline, plan...)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

回眸一笑 2024-12-04 13:16:39

摘自:google codeplex

算法
1. 将24个游戏结果视为一棵二叉树(如果你不知道它是什么,请先查看数据结构书)。
2. 二元分支有3种类型。 “D OP D”、“POP D 或 D OP P”、“POP P”。其中,D为数字(大于1的整数),P为指向下游另一分支的指针,OP为运算符“+、-、/”。特别是,“D OP D”必须位于树的叶子位置。
3. 生成所有可能的树。并进行一些优化,比如“+”两侧的元素可以切换,而“-、/”则不能切换。
4. 生成 4 位数字的所有可能排列(4!= 24)。并删除相同的副本。
5. 混合树和数字排列,进行计算,我们就得到结果了!

Taken from: google codeplex

Algorithm
1. Think 24 game result as a binary tree(if you don't know what's it, check data structure book first).
2. There are 3 types of binary branches. "D OP D", "P OP D or D OP P", "P OP P". In which, D is digit(integer larger than 1), P is pointer to another downstream branch, and OP is operator "+,-,,/". Especially, "D OP D" must be in the leaf position of the tree.
3. Generate all the possible trees. And apply some optimization, like element at the two sides of "+," are switchable, while "-,/" are not.
4. Generate all the possible permutation of 4 digits (4! = 24). And remove the same copies.
5. Mix trees and digits permutations, do calculation, and we get the result!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文