我喜欢在长时间的电话会议中玩的游戏带给您这个问题。
给定24小时制(从00:00到23:59)中的任意两次,仅使用基本算术运算之间的所有时间可以生成多少个有效的数学方程式?
输入:两个四数字串(无结肠)表示在24小时循环有效时间。
例子:
输入= 0000,1300
03:26 produces: "0+3*2=6" and "03*2=6" etc.
11:10 produces quite a few, including: "1*1=1+0" and "1=1=1^0" and "1=11^0" etc.
12:24 produces: "1/2=2/4" and "1=(2*2)/4" etc.
有效的操作是:
- 加成
- 减法
- 乘法
- 除法(浮点数)
- 求幂
- 阶乘
其他允许的符号
- 括号
- 等号
最短的代码获胜。
笔记
- 我们的目标是找到数的两倍,那几次都不数量之间有效的表达式包含一个有效的表达。
- 输入的两次时间包含在时间范围内。
- 您可以采用任何可能的方式对数字进行分组,因此“ 1223”可以是“ 12 23”或“ 1 2 23”或“ 1 223”等。
- 您可以根据需要使用任意多个括号。
- 您可以使用多个
=
标志。例如,时间11:11
具有有效的表达式1=1=1=1
。 - 如果第一次是在第二次之后按时间顺序发生的,则时间范围应像进入第二天一样环绕。
- 数字必须保持其原始顺序-您不能重新排序数字。
- 在对数字进行聚类时,零可能绝对是最前面的数字,在这种情况下,它们将被忽略(聚类为“ 03 03”的“ 0303”只是值为3的两位)。
- 您不得将减号用作一元否定。因此,“ 12:01”不会产生“ 1-2 =-(01)”,但是会产生“ 1-2 = 0-1”。
- 您不能在数字上加上小数点。因此,“ 12:05”不会产生“ 1/2 = 0.5”。
- 没有阶乘的链接-一个数字最多只能跟一个“!”,否则,很多时候将具有无限的解。例如:“ 5!” 有效,但“ 5!” 无效。
2
apps.getpebble.com/en_US/application/5309427924c4582908000046
—
Beta Decay,
“ 有效操作包括 ”似乎阻止您添加测试用例。如果将其更改为“ 有效操作为 ”并添加了一些测试用例,那将是一个更好的问题。精确地确定端点也将很有用:对于输入
—
彼得·泰勒
0000 1300
,方程应源自计数0000
并1300
包括在计数中?
给定数字“ 1423”,请执行“ 1 + 4 = 2 + 3”,“(1 + 4)=(2 + 3)”,“(1 + 4)= 2 + 3”和“ 1 + 4 =(2 +3)”算作一个或四个方程式?还有......什么都的“0000”式?我认为大约有100种可能性,甚至更多...这可能吗?
—
bobbel
一元运算符的使用是否受到限制?在规则中没有这样的限制时,阶乘可以重复应用,因此不可能找到完美的解决方案。
—
迈克尔·斯特恩
迈克尔,这是一个很好的观察。因此,为了解决这个难题,我认为我将其限制为每个“数字”一个阶乘。为此,5!有效,但5!无效。
—
nobillygreen