异常取消(来自Wolfram Alpha):
异常抵消是分数a / b的分子和分母中a和b的数字“取消”,导致分数等于原始数。请注意,如果分子和分母中一个或多个数字存在多个但不同的计数,则对于要取消的数字有歧义,因此最简单的方法是将此类情况排除在考虑范围之外。 链接
用简单的话说,你有一个分数a / b
。如果您可以抵消分数中的数字以创建另一个c / d
等于原始分数(a / b = c / d
)的分数,则可以使用异常抵消来简化分数。
您的挑战是制作一个程序或函数,该程序或函数以形式输入分数字符串a/b
并输出或返回真实值(如果可以使用反常消除来简化分数),否则返回伪造的值。a
并且b
将始终为非零的正整数。a
并且b
将始终具有两个或多个数字。此外,所有的无论从数字a
还是b
不会被取消了(你不会得到输入12/21
),至少一个数字从a
和b
每次(你不会获得输入将被取消43/21
),而最终的结果将永远不会0
对任何a
或b
。您的程序必须取消a
和之间的所有公用数字b
(即1231/1234
,您必须取消了1
,一2
,和3
)。如果有多种取消的可能性,请首先选择最左边的数字(515/25变为15/2而不是51/2)。
例子:
Input Output Why
1019/5095 true Remove the 0 and the 9 from both sides of the fraction to get 11/55, which is equivalent.
16/64 true Remove the 6 from both sides, and get 1/4.
14/456 false Remove the 4s. 14/456 is not equal to 1/56.
1234/4329 false Remove the 2s, 3s, and 4s. 1234/4329 is not equal to 1/9.
515/25 false Remove the first 5 from each side. 15/2 is not equal to 515/25.
这是代码高尔夫球,因此以字节为单位的最短代码胜出!
1
相关:codegolf.stackexchange.com/questions/37794/…巧合的是,我刚浏览了您所引用的mathworld条目=)
—
更加模糊的
我在515/25印象中取消到103/5?
—
普尔加2015年
@Pulga分子中的前5个将与分母中的5抵消,剩下15/2。
—
Alex A.
@Pulga 11和55不共享任何数字,因此无法使用此方法进一步简化。但是,使用普通的分数简化会是这种情况,但是在此挑战中,我们仅取消了数字。
—
GamrCorps,2015年
43/21的答案是什么?
—
xnor