El mínimo común múltiplo (LCM) de un conjunto de números A
es el más pequeño número entero b
tal que b/a
es un número entero para todos los enteros a
en A
. ¡Esta definición se puede extender a números racionales!
Tarea
Encuentre el racional positivo más pequeño b
tal que b/a
sea un número entero para todos los racionales a
en la entrada.
Reglas
- Las lagunas estándar están prohibidas.
- Puede tomar numeradores y denominadores por separado en la entrada, pero no puede tomar dobles, flotantes, etc.
- La entrada puede no reducirse completamente.
- Puede tomar entradas enteras como racionales con denominador de
1
. - Los envíos que alimentarían números racionales a un LCM / GCD incorporado están permitidos, pero no son competitivos.
Casos de prueba
In: 3
Out: 3
In: 1/17
Out: 1/17
In: 1/2, 3/4
Out: 3/2
In: 1/3, 2/8
Out: 1
In: 1/4, 3
Out: 3
In: 2/5, 3
Out: 6
In: 1/2, 3/4, 5/6, 7/8
Out: 105/2
Este es el código de golf , por lo que las presentaciones que utilizan la menor cantidad de bytes ganan.
code-golf
number
arithmetic
rational-numbers
JungHwan Min
fuente
fuente
LCM[numerators]/GCD[denominators]
puede no funcionar cuando la entrada contiene un número racional no reducido. por ej1/3, 2/8
.Respuestas:
Jalea , 19 bytes
Pruébalo en línea!
fuente
g/:@$€
->:g/$€
:g/$€ZµḢæl/,Ḣg/$
J, 3 bytes, no competitivos.
Dada una lista de entradas racionales, esto dobla LCM a través de ella.
fuente
sed, 374 (373 + 1) bytes
La
-E
bandera de sed cuenta como un byte. Nota: No he intentado jugar golf todavía, y probablemente no lo haga durante bastante tiempo.La entrada se toma en unario y la salida en unario. Los espacios deben rodear cada fracción. Ejemplo:
echo " 1/111 111/11111 111111/111 "
.Pruébalo en línea!
fuente
Python 2 , 65 bytes (no competitivos)
Pruébalo en línea!
fuente
JavaScript (ES6), 85 bytes
¡No busques construcciones! Sin duda alguien superará esto usando un enfoque recursivo o algo así.
fuente
Pari / GP , 3 bytes, no competidor
Pruébalo en línea!
fuente
Perl 6 ,
4642 bytesPruébalo
Pruébalo
La entrada es una lista de números racionales .
Expandido:
fuente
Retina , 117 bytes
Pruébalo en línea! Toma datos como una serie de fracciones impropias separadas por espacios (sin números enteros o mixtos). Explicación:
Convierte decimal a unario.
Esto reduce cada fracción a sus términos más bajos. El grupo de captura 1 representa el MCD del numerador y el denominador, por lo que contamos el número de capturas antes y después de
/
.\b(1+)+/(\1)+\b
no parece contar el número de capturas correctamente por alguna razón, por lo que uso un grupo de captura adicional y agrego 1 al resultado.Esto hace una serie de cosas. El grupo de captura 2 representa el MCD de los numeradores de las dos primeras fracciones, mientras que el grupo de captura 3 representa el MCD de los denominadores.
$#4
es, por lo tanto, el segundo numerador dividido por su MCD. (Nuevamente, no pude ver la cantidad de capturas del primer numerador, pero solo necesito dividir un numerador por su GCD, por lo que no me cuesta tanto).Ahora que el segundo numerador se ha dividido por su MCD, solo usamos esta expresión del tutorial aritmético unario para multiplicar los dos juntos, lo que resulta en el MCM. Luego repetimos el ejercicio para las fracciones restantes.
Convierte unario de nuevo a decimal.
fuente
Lisp común, 154 bytes
Algoritmo utilizado (especificado para enteros, pero también funciona para racionales).
Primero haga una lista asociativa de los datos de entrada consigo mismo, para hacer un seguimiento de los valores iniciales de los elementos, de modo que la secuencia de operación esté dada por el "automóvil" de la lista.
Casos de prueba:
Nota: La solución es sin el uso de la construcción
lcm
ygcd
, que aceptan enteros.fuente
(/ (lcm 1 3 5 7) (gcd 2 4 6 8))
.(lcm 1 3 5 7)
, ya que los enteros son un subtipo de racionales, pero creo que se supone que la regla excluye el uso de alcm
ogcd
que permite entradas racionales.lcm
ygcd
.Mathematica, 3 bytes, no competitiva
Mathematica incorporado en
LCM
la función es capaz de manejar las entradas de números racionales.fuente
PHP , 194 bytes
-4 Bytes con PHP> = 7.1 en
[$n,$d]=$_GET
lugar delist($n,$d)=$_GET
Pruébalo en línea!
fuente
Lisp común,
8778 bytesUtilizando
lcm
ygcd
, que tienen entradas enteras:Más golfizado:
fuente