Project Euler Problem 33

該当する場合は、
分子の1の位の数と、分母の10の位の数が同じで、
それを除去する場合のみであるが、
なぜそうなのかは、分からない。

Python

from fractions import Fraction

def is_digit_cancelling(nu, de):
    nu_10, nu_1 = divmod(nu, 10)
    de_10, de_1 = divmod(de, 10)

    if de_1 == 0: return False

    if nu_1 == de_1:
        if Fraction(nu, de) == Fraction(nu_10, de_10):
            return True

    if nu_1 == de_10:
        if Fraction(nu, de) == Fraction(nu_10, de_1):
            return True

    if nu_10 == de_1:
        if Fraction(nu, de) == Fraction(nu_1, de_10):
            return True

    if nu_10 == de_10:
        if Fraction(nu, de) == Fraction(nu_1, de_1):
            return True

    return False

answer = 1
for numerator in range(10, 99):
    for denominator in range(numerator + 1, 100):
        if is_digit_cancelling(numerator, denominator):
            answer *= Fraction(numerator, denominator)

print(answer.denominator)