Cancelamento anômalo (de Wolfram Alpha):
O cancelamento anômalo é um "cancelamento" dos dígitos de aeb no numerador e denominador de uma fração a / b que resulta em uma fração igual ao original. Observe que, se houver várias contagens, mas diferentes, de um ou mais dígitos no numerador e no denominador, haverá ambiguidade sobre quais dígitos serão cancelados; portanto, é mais fácil excluir esses casos da consideração. Ligação
Em termos simples, digamos que você tenha uma fração a / b
. Se você pode cancelar os dígitos da fração para criar outra fração c / d
igual ao original ( a / b = c / d
), o cancelamento anômalo pode ser usado para simplificar a fração.
Seu desafio é criar um programa ou função que insira uma string de fração no formato a/b
e produza ou retorne um valor verdadeiro se a fração puder ser simplificada usando cancelamento anômalo e, caso contrário, um valor falso. a
e b
sempre serão números inteiros positivos diferentes de zero. a
e b
sempre terá dois ou mais dígitos. Além disso, todos os dígitos a partir de qualquer a
ou b
não será cancelado (você não vai conseguir a entrada 12/21
), pelo menos um dígito a partir a
e b
serão canceladas a cada vez (você não vai conseguir a entrada 43/21
), e o resultado final nunca será 0
para qualquer um a
ou b
. Seu programa deve cancelar todos os dígitos comuns entre a
e b
(ou seja, em1231/1234
, você deve cancelar a 1
, a 2
e a 3
). Se houver várias possibilidades de cancelamento, escolha primeiro o dígito mais à esquerda (515/25 passa a 15/2 e não 51/2).
Exemplos:
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.
Isso é código-golfe , então o código mais curto em bytes vence!