No ensino fundamental, as crianças aprendem sobre frações apropriadas, onde o numerador é menor que o denominador e, portanto, o valor da fração é menor que um. Posteriormente, eles são ensinados sobre frações em que o valor da fração é maior que uma e duas maneiras diferentes de expressar essas frações: frações mistas e frações impróprias.
Dada uma fração mista, determine se é equivalente à fração imprópria em que o valor inteiro e o numerador são concatenados juntos. Por exemplo, para entrada 1 3/4
, a fração imprópria é 13/4
.
Casos de teste
1 3/4 -> falsey
1 3/10 -> truthy
6 6/7 -> falsey
55 55/100 -> truthy
4 9/100 -> falsey
40 9/100 -> falsey
7 49/1000 -> falsey
9 1/2 -> falsey
999 999/1000 -> truthy
1 21/200 -> falsey
1 21/101 -> falsey
Para entrada, você pode considerar a parte inteira e a parte da fração como entradas separadas, mas não pode considerar a fração como entrada em duas partes e não pode ser considerada como valor decimal. Você pode soltar a parte inteira (não a aceitará como entrada) se não precisar usá-la.
54/100
simplifica para27/50
55/100
também pode ser simplificado11/20
, então a mesma pergunta @JoKing levantada surge lá./
faz: /Respostas:
MATL , 7 bytes
Entrada é uma sequência. A saída é
1
para verdade,0
para falsey.Experimente online!Ou verifique todos os casos de teste .
Explicação
fonte
Perl 6 ,
1612 bytesExperimente online!
Recebe a entrada como uma sequência que representa a fração. Acontece que a digitação dinâmica do Perl 6 pode manipular cadeias de caracteres para frações racionais, quem sabia? Então a corda
"1/10"
quando forçada a um número, retorna0.1
O bloco de código anônimo simplesmente verifica se a fração mais um é igual a uma concatenada com a fração. Graças à resposta Python do xnor por me mostrar que a parte inteira não importa.
Solução antiga,
2726 bytesExperimente online!
Recebe a entrada como uma fração mista racional e retorna verdadeiro ou falso. Retorna false para o quarto caso de teste porque pode ser simplificado.
Explicação:
.nude
retorna uma lista de[numerator, denominator]
.fonte
.nude
seja nomeado para nu merator + de nominator , mas alguém provavelmente teve um grande prazer em poder chamá-lo assim.'1 3/10'
{S/\s//==.words.sum}
Retina 0.8.2 ,
1716 bytesExperimente online! Requer apenas a parte da fração, para que o conjunto de testes vinculado remova o número inteiro dos casos de teste. Explicação: A concatenação imprópria é igual ao número misto apenas se o denominador for uma potência de 10 e o numerador tiver um dígito para cada zero no denominador. Os grupos de balanceamento do .NET são usados para verificar se existem dígitos suficientes. Editar: salvou 1 byte graças a @sundar.
fonte
1 11/10
. Parece ser um problema com a sua implementação, não o método^
, em vez disso, para que não ajude./
torna inequívoca o que você está combinando, então eu não acho que você precisa a âncora lá (passando por regras habituais regex correspondência, nenhuma perícia Retina aqui). Parece funcionar de qualquer maneira: Experimente online! .Casca , 8 bytes
Experimente online!
Explicação
fonte
Python 2 , 43 bytes
Experimente online!
fonte
R ,
78bytes 65Experimente online!
-13 bytes graças a Giuseppe e JayCe!
fonte
sub
está bem aqui. Além disso, você pode usar emt=
vez detext=
Stax , 5 bytes
Execute e depure
Explicação:
fonte
Python 3 , 26 bytes
Experimente online!
Por exemplo, entrada
3/4
dá3/4+1==13/4
. Em vez de pegar a parte inteira da fração, apenas a configuramos1
para testar a igualdade da fração mista. Casos de teste de Chas Brown.fonte
Braquilog , 15 bytes
Experimente online!
Toma a parte fracionária sozinha como uma entrada de sequência.
Indiretamente, usa a mesma ideia da minha resposta Julia - "o denominador é 10 ^ {comprimento do numerador}" pode ser dito como "o denominador é uma potência de dez e o comprimento do denominador é igual ao comprimento do numerador + o comprimento de "/" (ou seja, 1).
Resposta mais antiga:
1520 bytesExperimente online!
(-1 byte graças a @Fatalize, mas infelizmente +6 bytes desde que descobri bugs no método mais antigo.)
Mesma ideia que a minha resposta de Julia .
fonte
A
com a variável de saída.
(e, portanto, remover a últimaA
porque a variável de saída é implicitely lá no final)61/10
(usando apenas 6 como numerador / prefixo)2/110
(usando apenas 10 como denominador / sufixo). Eu tentei corrigi-lo, não tenho certeza se esta é a melhor maneira de fazê-lo.Julia 0.6 , 29 bytes
Experimente online!
Com base na idéia de que a saída deve ser verdadeira somente quando o denominador for uma potência de dez com o número de zeros que houver dígitos no numerador. Pega a entrada como um
Rational
tipo, verifica se o denominador é igual a 10 aumentado para o número de dígitos no numerador.fonte
Limpo , 57 bytes
Experimente online!
Este é um pouco mais curto, mas quebra para numeradores / denominadores grandes.
Limpo ,
77616058 bytes-1 graças à dica de OMᗺ na minha outra resposta
Experimente online!
Isso usa o método de Neil , é um pouco menor do que fazê-lo diretamente.
Existem alguns truques com sobrecarga de conversão, onde
1<+[48\\_<-:u]
converte[Int]
para[Char]
e depois para{#Char} (:== String)
, masInt
diretamente paraString
.Limpo ,
9189 bytesExperimente online!
Define uma função
$ :: String String -> Bool
que extrai o numerador e o denominador, concatena a parte inteira e o numerador e verifica a equivalência.fonte
05AB1E , 7 bytes
Leva apenas as frações como entrada.
Experimente online ou verifique todos os casos de teste .
Explicação:
Ou uma explicação mais geral:
Temos que validar duas coisas:
1, 10, 100, 1000
, etc.)?PS: Se pudéssemos tomar o numerador eo denominador como entradas separadas, apenas 3 bytes teria sido suficiente:
g°Q
.fonte
JavaScript, 26 bytes
Recebe entrada na sintaxe de curry (
f(x)(y)
), ondex
é o número inteiro ey
é a fração como uma sequência.Experimente online
fonte
Java 10,
107706757 bytesBem-vindo ao mundo sem
eval
..-40 bytes, criando uma porta da resposta Python 2 do @ChasBrown .
-10 bytes graças a @Shaggy (eu deveria ter lido melhor a resposta de @ChasBrown e seu uso de
find
(indexOf
) ..)Experimente online.
Explicação:
fonte
Haskell ,
4740 bytes-7 graças a OMᗺ
Experimente online!
Uma porta da minha resposta limpa usando o método de Neil.
fonte
Perl 5- p, 23 bytes
Experimente online!
Pega a parte fracionária sozinha como entrada (conforme permitido pelo OP), produz 1 para true e nada para false.
A parte decimal tomada por si só seria exatamente igual ao numerador apenas quando o denominador for a próxima potência imediata de dez maior que o numerador, que é a condição que precisamos verificar.
fonte
Noether, 17 bytes
Experimente online!
Explicação
Então, como isso funciona? Bem, se você olhar para os casos de teste, os únicos casos verdadeiros são quando o denominador é uma potência de dez,10uma , Onde uma é o comprimento do numerador mais um (a = ⌊ log10n ⌋ + 1 , Onde n é o numerador e ⌊ x ⌋ representa a função do piso).
fonte
TeaScript , 25 bytes
A primeira entrada é a fração, a segunda é o número inteiro.
Eu apenas comecei no TeaScript, então ele pode ser muito jogado
Experimente online!
fonte
R , 53 bytes
Experimente online!
Toma apenas a parte fracionária como entrada. Como mencionado por xnor em um comentário:
A resposta de Robert S. é menos golfe, mas muito mais interessante que a minha.
fonte
C (gcc) ,
675655 bytesExperimente online!
fonte
r
? tio.run/…Excel, 52 bytes
Ignora a entrada Inteiro. Basicamente:
IS Denominator = 10^LEN(Numerator)
Para denominadores limitados a
<10^9
: 48 bytes:O volume da lógica está se dividindo
/
. Se a entrada puder ser obtida separadamente, 16 bytes:fonte
Elixir , 81 bytes
Experimente online!
Pode ser capaz de chegar a algum lugar
{n,"/"<>d}=Integer.parse b
, mas não sei como.fonte
2DFuck , 86 bytes
Experimente online!
Recebe entrada sem parte inteira.
fonte
C (gcc / clang),
594947 bytesResposta do Python 2 do porto de Chas Brown . Experimente online aqui .
Ignora a parte inteira da entrada. Agradecimentos a Jonathan Frech por jogar 2 bytes.
Ungolfed:
fonte
'/'
provavelmente pode ser47
.ForceLang,
8678 bytesfonte