Algorithm 我怎样才能解开九九之谜;这是程序化的吗?

Algorithm 我怎样才能解开九九之谜;这是程序化的吗?,algorithm,puzzle,Algorithm,Puzzle,我如何通过编程解决这个谜题?有人能帮我写些伪代码什么的吗 9个9 将九个9和任意数量的运算符+,-,*,/,(,)组合在一起,不能表示的最小正整数是什么 提示: 答案不是零。可以这样表示零: (9 - 9) * (9 + 9 + 9 + 9 + 9 + 9 + 9). 而且,零不是一个正整数 答案不是一个。你可以这样表达: 9-(9*9-9)/9+9-9+9-9 这不是一个骗人的问题 确保正确处理括号 注意事项: 不能使用幂运算 不能连接(例如, 将两个9放在一起构成99) -运算符可以在以下

我如何通过编程解决这个谜题?有人能帮我写些伪代码什么的吗

9个9

将九个9和任意数量的运算符+,-,*,/,(,)组合在一起,不能表示的最小正整数是什么

提示:

  • 答案不是零。可以这样表示零: (9 - 9) * (9 + 9 + 9 + 9 + 9 + 9 + 9). 而且,零不是一个正整数

  • 答案不是一个。你可以这样表达: 9-(9*9-9)/9+9-9+9-9

  • 这不是一个骗人的问题

  • 确保正确处理括号

  • 注意事项:

    • 不能使用幂运算
    • 不能连接(例如, 将两个9放在一起构成99)
    • -运算符可以在以下两种情况中使用: 它的二进制或一元形式
    • 假设基数为10


    这实际上是一个著名的谜题,互联网上可能有很多解决方案。我不确定他们中是否有人是正确的。有人有解释得很好的解决方案吗?

    195,

    答案是195,下面是一些Python代码,它通过从
    exp1 OP exp2
    生成新表达式来简单地构建所有可能的表达式。它在我的电脑上以0.165s的速度运行

    exp = [set() for _ in xrange(10)]
    exp[0].add(0)
    exp[1].update([9, -9])
    for i in xrange(1, 10):
      for a in list(exp[i]):
        for j in xrange(i, 10):
          for b in list(exp[j-i]):
            exp[j].update([a+b, a-b, a*b])
            if b != 0:
              exp[j].add(a/b)
    
    n = 0
    while n in exp[9]:
      n += 1
    print n
    

    编辑: 如果答案必须是精确整数(而不仅仅是整数除法的四舍五入结果),那么除法完成后必须进行检查

        if ((b != 0) and ((a/b) == float(a)/b)):
          exp[j].add(a/b)
    
    根据对规则的这种解释,新的答案是138。
    (现有版本计算1386/10[或-1386/-10]并得到138)

    我认为这是离题的,主要原因有两个。(1) 这个问题从根本上说与编程无关——它是一个数学问题。(2) 你想解决一个特殊的问题吗?您是否试图创建一个
    code高尔夫
    问题?到目前为止你试过什么?我看不到任何与此相关的东西。。。那么你的美元符号符号是怎么回事?@Matt Ball:我认为美元符号符号来自乳胶。@Matt Ball-OP已经请求帮助以编程方式解决这个难题,因此它完全是关于这个主题的。除此之外,代码中的哪些数学通常都是主题。@Matteo Italia:我一直认为他们需要获得LaTeX数学在StackOverflow上的支持,数学有它,所以StackOverflow也可以。@Philando Gluible:同意,投票重新开放。似乎到处都是非数学编码者,这是我所希望的一个矛盾修饰法。