異常なキャンセル(Wolfram Alphaから):
異常なキャンセルとは、分数a / bの分子と分母におけるaとbの数字の「キャンセル」であり、結果として元の分数と等しくなります。分子と分母に1つ以上の桁の複数の異なるカウントがある場合、キャンセルする桁があいまいになるため、このような場合を考慮から除外するのが最も簡単であることに注意してください。 リンク
簡単に言えば、分数があるとしましょうa / b
。分数の桁をキャンセルしてc / d
元の(a / b = c / d
)と等しい別の分数を作成できる場合、異常なキャンセルを使用して分数を単純化できます。
あなたの課題は、フォームに分数文字列を入力し、a/b
異常なキャンセルを使用して分数を単純化できる場合は真理値を出力し、そうでない場合は偽値を返すプログラムまたは関数を作成することです。a
そしてb
、常にゼロ以外の正の整数になります。a
そしてb
常に2桁以上を持つことになります。また数字の、すべてのいずれかから、a
またはb
(あなたが入力を取得文句を言わない相殺されることはありません12/21
少なくとも1桁)からa
とb
(あなたが入力を取得文句を言わないたびにキャンセルされます43/21
)、および最終結果はなることはありません0
どちらかのためにa
またはb
。あなたのプログラムは、a
との間のすべての一般的な数字をキャンセルする必要がありb
ます1231/1234
、a 1
、a 2
、aをキャンセルする必要があります3
。キャンセルの可能性が複数ある場合は、左端の桁を最初に選択します(515/25は51/2ではなく15/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.
これはcode-golfなので、バイト単位の最短コードが勝ちです!