请告诉我如何构建一个算法来处理一个六位数的数字,以便可以通过数学运算找出它所包含的数字是否为100?
示例:
050500 ---> (0 + 50 + 50 + 0) == 100
595545 ---> (5 + ((9 * 5) + (5 + 45))) = 100
093342 ---> (0 + ((9 / (3 / 34)) - 2)) = 100
231357 ---> (2 - (3 * (((1 / 3) - 5) * 7))) = 100
...
我发现一篇关于 Habr 的文章 ( https://habr.com/ru/post/339654/ ),其中给出了一个类似的例子。
将 6 位数字转换为数字数组不是问题。
例如:a = 123456;
然后 String(a).split('').map(e => +e) // 输出 ---> [1,2,3,4,5,6]
但是如何进一步排列符号(+,-,/,*)并正确放置括号,这辈子我都想不起来:(我已经为这个任务苦苦挣扎了一个月。我想按照 Habr 的文章中描述的那样做(见上文),但我不知道如何在 java 脚本中实现这一点,甚至有可能在 JS 中创建这样的“动态”公式,还是你需要事先为动作指定模板,然后在其中替换数字???
请给我一个思考的方向。
一个没有括号的例子。
代码运行但并非在所有浏览器中运行,我收到两个错误:
和
告诉我可以用这个做什么,我做错了什么?
关于第二个:
这里有一个错误。这部分将“073”替换为“73”,因为 073 === 59. 在“使用严格”中,这种数字的八进制表示是错误的。没有 'g' 标志,只有第一个匹配被替换。strict 的明显好处,没有它就没有错误,结果不正确 =)
现在排除了具有不同执行顺序的视觉相同的解决方案
我遇到了这个解决方案