java - 使用特定数字来达到目标​​数字

标签 java arrays integer operators target

对于我的作业,我必须允许玩家根据需要从两个不同的列表中选择 6 个数字。

List<Integer> large = Arrays.asList(25, 50, 75, 100);
List<Integer> small = Arrays.asList(1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6,
            7, 7, 8, 8, 9, 9, 10, 10);

在他们选择了数字(例如 [100, 3, 5, 6, 9, 5])后,他们会生成一个目标数字(例如 299),然后他们只能使用选择的数字作为达到目标的方法。仅使用乘法、加法、减法和除法的目标。因此,他们可以输入例如 100 * 3 + 5 - 6 来达到 299 的目标,并且将对此进行适当的检查和评分。

不幸的是,我真的没有太多可做的,而且我什至不知道如何开始这样做,我不是在寻找直接的答案,也许一些指示或外部帮助会非常感谢。

最佳答案

如果我们遵循 Bedmas(括号指数除法乘加减法),我们可以将其分解为一个简单的函数。

首先将方程转化为组件列表:

100 * 3 + 5 - 6

更改为

["100", "*", "3", "+", "5", "-", "6"]

现在评估每个元素以确保它们有效。 ie) 组件列表中的每个值必须在选择列表中或具有值,*/+-,另外如果有 n 个 num,则应该有 n-1 个 sym

为了获得结果,我们可以评估列表,..按照 bedmas 的顺序合并 num-sym-num 部分

伪:

func int compute_val(ListString eqn)
    while not eqn.length is 1
        if "*" in eqn
            index = eqn.getIndex("*")
            replace eqn[index -1:index +1] with str((int) eqn[index -1] * (int)eqn[index +1])
        else if "/" in eqn
            index = eqn.getIndex("/")
            replace eqn[index -1:index +1] with str((int) eqn[index -1] / (int)eqn[index +1])
        else if "+" in eqn
            index = eqn.getIndex("+")
            replace eqn[index -1:index +1] with str((int) eqn[index -1] + (int)eqn[index +1])
        else if "-" in eqn
            index = eqn.getIndex("-")
            replace eqn[index -1:index +1] with str((int) eqn[index -1] - (int)eqn[index +1])
    return (int)eqn[0]

这将是在循环中计算方程时列表的进展

["100", "*", "3", "+", "5", "-", "6"]  --> ["300", "+", "5", "-", "6"]  --> 
["305", "-", "6"]  --> ["299"]

关于java - 使用特定数字来达到目标​​数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22509715/

相关文章:

javascript - 可以将数字存储为 float 吗?

java - 在 Java 中使用 .stream() 比较整数

java - 如何在改造中的url中添加带双引号的post查询参数字符串?

java - 如何从 AES-256 切换到 AES-128?

java - 如何通过JPA获取保存对象的id?

java - 如何使用 Printwriter 将字符串数组写入 java 中的文本文件?

c - 基数排序不排序 "some"数字?

java - 使用 List.toArray 时数组变为 null

c - 从流中读取时大小不同的数组

integer - clojurescript `and` 整数函数的行为令人困惑