Tenemos muchos desafíos basados en la base 10, la base 2, la base 36 o incluso la base -10 , pero ¿qué pasa con todas las otras bases racionales?
Tarea
Dado un número entero en la base 10 y una base racional, devuelve el número entero en esa base (como una matriz, cadena, etc.).
Proceso
Es difícil imaginar una base racional, así que visualicémosla usando puntos de explosión :
Considere esta animación, que expresa 17 en la base 3:
Cada punto representa una unidad, y los cuadros representan dígitos: el cuadro más a la derecha es el lugar de uno, el cuadro del medio es el lugar 3 ^ 1, y el cuadro más a la izquierda es el lugar 3 ^ 2.
Podemos comenzar con 17 puntos en el lugar de uno. Sin embargo, esta es la base 3, por lo que el lugar de las unidades debe ser menor que 3. Por lo tanto, "explotamos" 3 puntos y creamos un punto en el cuadro a la izquierda. Repetimos esto hasta que terminemos con una posición estable sin puntos explotables (es decir, 3 puntos en el mismo cuadro).
Entonces 17 en la base 10 es 122 en la base 3.
Una base fraccional es análoga a la explosión de cierto número de puntos en más de un punto. Base 3/2 estaría explotando 3 puntos para crear 2.
Expresando 17 en base 3/2:
Entonces 17 en la base 10 es 21012 en la base 3/2.
Las bases negativas funcionan de manera similar, pero debemos hacer un seguimiento de los signos (usando los llamados antidotos, igual a -1; representado por un círculo abierto).
Expresando 17 en base -3:
Tenga en cuenta que hay explosiones adicionales para que el signo de todas las cajas sea el mismo (ignorando los ceros).
Por lo tanto, 17 en la base 10 es 212 en la base -3.
Las bases racionales negativas funcionan de manera similar, en una combinación de los dos casos anteriores.
Reglas
- No hay lagunas estándar.
- El signo de cada "dígito" en la salida debe ser el mismo (o cero).
- El valor absoluto de todos los dígitos debe ser menor que el valor absoluto del numerador de la base.
- Puede suponer que el valor absoluto de la base es mayor que 1.
- Puede suponer que una base racional está en su forma reducida más baja.
- Puede tomar el numerador y el denominador de la base por separado en la entrada.
- Si un número tiene múltiples representaciones, puede generar cualquiera de ellas. (por ejemplo, 12 en base 10 pueden ser
{-2, -8}
y{1, 9, 2}
en base -10)
Casos de prueba:
Formato: {in, base} -> result
{7, 4/3} -> {3, 3}
{-42, -2} -> {1, 0, 1, 0, 1, 0}
{-112, -7/3} -> {-6, -5, 0, -1, 0}
{1234, 9/2} -> {2, 3, 6, 4, 1}
{60043, -37/3} -> {-33, -14, -22, -8}
Dado que algunas entradas pueden tener múltiples representaciones, recomiendo probar la salida usando este fragmento de Mathematica en TIO.
Este es el código de golf , por lo que las presentaciones con el menor número de bytes en cada idioma ganan
Para obtener más información sobre puntos explosivos, visite el sitio web del proyecto global de matemáticas . ¡Tienen un montón de cosas geniales!
fuente
Respuestas:
Python 2 ,
4239 bytesPruébalo en línea!
Gracias a @xnor por encontrar la forma más corta.
Versión obsoleta (42 bytes):
Pruébalo en línea!
Parámetros: entrada, numerador (con signo) y denominador.
Devuelve una matriz, el dígito más bajo primero.
Esto simplemente funciona porque la división y el módulo en Python siguen el signo del denominador, por lo que no tenemos que preocuparnos por los mismos signos explícitamente.
Salida de caso de prueba:
fuente
Aheui (esótopo) , 91 bytes
Pruébalo en línea!
Toma
integer
,numerator of base
ydenominator of base
.Debido a la limitación del intérprete TIO, cada entrada debe terminar con una nueva línea.
Implementación de la respuesta de @ Bubbler's Python 2 . Afortunadamente, este intérprete de Aheui está escrito en Python, por lo que podemos usar el mismo truco.
fuente
05AB1E ,
1110 bytesPruébalo en línea!
Toma
integer
,numerator of base
ydenominator of base
como todas las respuestas. Como el intérprete 05AB1E está escrito en Python (?), El truco de respuesta de Bubbler Python 2 también se puede utilizar en 05AB1E.Explicación
Entonces, el programa funciona más o menos igual que este código Python:
11> 10 Gracias Neil
fuente
_
lugar de0Q
aquí.