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!
fonte
Respostas:
Pitão,
2219 bytesObrigado a @isaacg por três bytes!
Explicação:
Experimente aqui .
fonte
m.-Fd
pode ser jogado golfe para.-M
. Da mesma forma,mcFsMd
pode ser jogado paracMsMM
..-FM
que não funcionou. Então seM
espalha automaticamente em funções não-monádicas?, 17 caracteres / 34 bytes
Try it here (Firefox only).
Explicação
fonte
Ruby,
9576 bytesExplicação
Agradecimentos maciços à maçaneta da porta para jogar 19 bytes de folga.
fonte
TeaScript, 22 bytes
Agora que todos os erros foram resolvidos no TeaScript 3, isso funciona muito bem
Experimente online
Suíte de teste
fonte
E is not defined
.MATL , 35 bytes
Exemplos
Explicação
fonte
Javascript ES6, 73 bytes
fonte