En la escuela primaria, los niños aprenden acerca de las fracciones adecuadas, donde el numerador es menor que el denominador y, por lo tanto, el valor de la fracción es menor que uno. Más tarde, se les enseña sobre fracciones donde el valor de la fracción es mayor que uno, y dos formas diferentes de expresar estas fracciones: fracciones mixtas y fracciones impropias.
Dada una fracción mixta, determine si es equivalente a la fracción impropia donde el valor entero y el numerador se concatenan juntos. Por ejemplo, para la entrada 1 3/4
, la fracción impropia es 13/4
.
Casos de prueba
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 la entrada, puede tomar la parte entera y la parte de la fracción como entradas separadas, pero no puede tomar la fracción como entrada en dos partes, y no puede tomarla como un valor decimal. Puede soltar la parte entera (no tomarla como entrada) si no necesita usarla.
54/100
simplifica27/50
55/100
También se puede simplificar11/20
, por lo que surge la misma pregunta que planteó @JoKing./
hace: /Respuestas:
MATL , 7 bytes
La entrada es una cadena. La salida es
1
para la verdad,0
para falsey.Pruébalo en línea! O verificar todos los casos de prueba .
Explicación
fuente
Perl 6 ,
1612 bytesPruébalo en línea!
Toma la entrada como una cadena que representa la fracción. Resulta que la escritura dinámica de Perl 6 puede manejar cadenas a fracciones racionales, ¿quién sabe? Entonces, la cadena
"1/10"
cuando se coacciona a un número, devuelve0.1
El bloque de código anónimo simplemente verifica si la fracción más uno es igual a uno concatenado con la fracción. Gracias a la respuesta de Python de xnor por mostrarme que la parte entera no importa.
Solución anterior,
2726 bytesPruébalo en línea!
Toma la entrada como una fracción mixta racional y devuelve verdadero o falso. Devuelve falso para el cuarto caso de prueba porque puede simplificarse.
Explicación:
.nude
devuelve una lista de[numerator, denominator]
.fuente
.nude
se llama así por nu merator + de nominator, pero alguien probablemente se complació en poder llamarlo así.'1 3/10'
{S/\s//==.words.sum}
Retina 0.8.2 ,
1716 bytesPruébalo en línea! Requiere solo la parte de fracción, por lo que el conjunto de pruebas vinculado elimina el número entero de los casos de prueba. Explicación: La concatenación incorrecta es igual al número mixto solo si el denominador es una potencia de 10 y el numerador tiene un dígito por cada cero en el denominador. Los grupos de equilibrio de .NET se utilizan para verificar que existan suficientes dígitos. Editar: Guardado 1 byte gracias a @sundar.
fuente
1 11/10
. Parece ser un problema con su implementación, no con el método^
cambio, así que no ayuda./
hace que sea inequívoco lo que está haciendo coincidir, por lo que no creo que necesite el ancla allí (siguiendo las reglas habituales de coincidencia de expresiones regulares, no hay experiencia de Retina aquí). Parece funcionar de todos modos: ¡ Pruébelo en línea! .Casco , 8 bytes
Pruébalo en línea!
Explicación
fuente
Python 2 , 43 bytes
Pruébalo en línea!
fuente
R ,
7865 bytesPruébalo en línea!
-13 bytes gracias a Giuseppe y JayCe!
fuente
sub
está bien aquí. Además, puede usar ent=
lugar detext=
Stax , 5 bytes
Ejecutar y depurarlo
Explicación:
fuente
Python 3 , 26 bytes
Pruébalo en línea!
Por ejemplo, la entrada
3/4
da3/4+1==13/4
. En lugar de tomar toda la parte de la fracción, solo la configuramos1
para probar la igualdad de fracción mixta. Casos de prueba de Chas Brown.fuente
Brachylog , 15 bytes
Pruébalo en línea!
Toma la parte fraccional sola como una entrada de cadena.
Indirectamente usa la misma idea que mi respuesta de Julia: "el denominador es 10 ^ {longitud del numerador}" se puede decir que "el denominador es una potencia de diez, y la longitud del denominador es igual a la longitud del numerador + la longitud de "/" (es decir, 1).
Respuesta anterior:
1520 bytesPruébalo en línea!
(-1 byte gracias a @Fatalize, pero desafortunadamente +6 bytes desde que descubrí errores en el método anterior).
La misma idea que mi respuesta de Julia .
fuente
A
con la variable de salida.
(y así eliminar el últimoA
porque la variable de salida está implícitamente allí al final)61/10
(usando solo 6 como numerador / prefijo)2/110
(usando solo 10 como denominador / sufijo). He tratado de arreglarlo, aunque no estoy seguro de si esta es la mejor manera de hacerlo.Julia 0.6 , 29 bytes
Pruébalo en línea!
Basado en la idea de que la salida debería ser verdadera solo cuando el denominador es una potencia de diez con tantos ceros como dígitos hay en el numerador. Toma la entrada como un
Rational
tipo, verifica que el denominador sea igual a 10 elevado al número de dígitos en el numerador.fuente
Limpio , 57 bytes
Pruébalo en línea!
Este es un poco más corto pero se rompe para numeradores / denominadores grandes.
Limpio ,
77616058 bytes-1 gracias al consejo de OMᗺ sobre mi otra respuesta
Pruébalo en línea!
Esto usa el método de Neil , es un poco más corto que hacerlo directamente.
Hay algunos trucos con la sobrecarga de conversión, donde se
1<+[48\\_<-:u]
convierte[Int]
a[Char]
y luego a{#Char} (:== String)
, peroInt
directamente aString
.Limpio ,
9189 bytesPruébalo en línea!
Define una función
$ :: String String -> Bool
que extrae el numerador y el denominador, concatena la cadena con la parte entera y el numerador, y verifica la equivalencia.fuente
05AB1E , 7 bytes
Solo toma las fracciones como entrada.
Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
O una explicación más general:
Tenemos que validar dos cosas:
1, 10, 100, 1000
, etc.)?PD: Si pudiéramos tomar el numerador y el denominador como entradas separadas, a sólo 3 bytes habría sido suficiente:
g°Q
.fuente
JavaScript, 26 bytes
Toma entrada en la sintaxis de curry (
f(x)(y)
) dondex
es el entero yy
es la fracción como una cadena.Pruébalo en línea
fuente
Java 10,
107706757 bytesBienvenido al mundo sin
eval
..-40 bytes creando un puerto de la respuesta Python 2 de @ChasBrown .
-10 bytes gracias a @Shaggy (debería haber leído mejor la respuesta de @ChasBrown y su uso de
find
(indexOf
) ..)Pruébalo en línea.
Explicación:
fuente
Haskell ,
4740 bytes-7 gracias a OMᗺ
Pruébalo en línea!
Un puerto de mi respuesta limpia usando el método de Neil.
fuente
Perl 5 -p, 23 bytes
Pruébalo en línea!
Toma la parte fraccional sola como entrada (según lo permitido por OP), salidas 1 para verdadero y nada para falso.
La parte decimal tomada por sí misma sería exactamente igual al numerador solo cuando el denominador es la siguiente potencia inmediata de diez mayor que el numerador, que es la condición que debemos verificar.
fuente
Noether, 17 bytes
Pruébalo en línea!
Explicación
Entonces, ¿cómo funciona esto? Bueno, si observa los casos de prueba, los únicos casos verdaderos son cuando el denominador es una potencia de diez,10un , dónde un es la longitud del numerador más uno (a = ⌊ log10n ⌋ + 1 , dónde norte es el numerador y ⌊ x ⌋ representa la función del piso).
fuente
TeaScript , 25 bytes
La primera entrada es la fracción, la segunda es el número entero.
Acabo de comenzar en TeaScript, por lo que podría jugar mucho golf
Pruébalo en línea!
fuente
R , 53 bytes
Pruébalo en línea!
Toma solo la parte fraccionaria como entrada. Como mencionó xnor en un comentario:
La respuesta de Robert S. es menos golfosa pero mucho más interesante que la mía.
fuente
C (gcc) ,
675655 bytesPruébalo en línea!
fuente
r
? tio.run/…Excel, 52 bytes
Ignora la entrada entera. Básicamente:
IS Denominator = 10^LEN(Numerator)
Para denominadores limitados a
<10^9
: 48 bytes:La mayor parte de la lógica se está dividiendo
/
. Si la entrada se puede tomar por separado, 16 bytes:fuente
Elixir , 81 bytes
Pruébalo en línea!
Podría llegar a algún lado
{n,"/"<>d}=Integer.parse b
, pero no estoy seguro de cómo.fuente
2DFuck , 86 bytes
Pruébalo en línea!
Toma entrada sin parte entera.
fuente
C (gcc / clang),
594947 bytesPuerto de Chas Brown 's Python 2 respuesta . Pruébelo en línea aquí .
Ignora la parte entera de la entrada. Gracias a Jonathan Frech por jugar al golf 2 bytes.
Sin golf:
fuente
'/'
lo más probable es que sea47
.ForceLang,
8678 bytesfuente