En este desafío hace 2 años, encontramos el período de una fracción unitaria ( 1/n where n is a natural number
).
Ahora, su tarea es escribir un programa / función para encontrar la repetición de una fracción unitaria.
La repetición es la parte de la expansión decimal que se repite infinitamente, como:
- La representación decimal de
1/6
es0.16666...
, luego la repetición es6
. - La representación decimal de
1/11
es0.090909...
, luego la repetición es09
. - La representación decimal de
1/28
es0.0357142857142857142857...
, luego la repetición es571428
.
Especificaciones
- Entrada en cualquier formato razonable.
- Salida de la repetición en decimal, cadena o lista .
- Para
1/7
(0.142857142857...
), debe generar en142857
lugar de428571
. - Para
1/13
(0.076923076923076923...
), debe generar en076923
lugar de76923
. - Sin fuerza bruta, por favor.
Casos de prueba
Input Output
1 0
2 0
3 3
7 142857
13 076923
17 0588235294117647
28 571428
70 142857
98 102040816326530612244897959183673469387755
9899 000101020305081321345590463683200323264976260228305889483786241034447924032730578846348115971310233356904737852308313971108192746742095161127386604707546216789574704515607637135064147893726639054449944438832205273259925244974239822204263056874431760783917567431053641781998181634508536215779371653702394181230427315890493989291847661379937367410849580765733912516415799575714718658450348520052530558642287099707041115264168097787655318719062531568845337912920497019901
Puntuación
Este es el código de golf . La solución más corta en bytes gana.
No se aceptará ninguna respuesta, porque el objetivo no es encontrar el idioma capaz de producir la solución más corta, sino la solución más corta en cada idioma.
Tabla de clasificación
code-golf
math
arithmetic
number-theory
Monja permeable
fuente
fuente
1/13
es0.076923076923...
0.769230769230...
Respuestas:
Java, 150 bytes:
Espacio en blanco agregado:
Ungolfed, programa completo:
fuente
for(;;)
¡Sería menos bytes quewhile(2<3)
aunque también es un bucle infinito! (y menos bytes quewhile(1)
también @Maltysen)a
yr
en los bucles for. ¡Ahorra bytes!CJam, 26
Pruébalo en línea
Explicación:
El programa construye una serie de dividendos involucrados en el cálculo de la expansión decimal, hasta que encuentre un dividendo que haya visto antes. Luego toma todos los dividendos que comienzan con ese, y los divide por n para obtener los dígitos de la repetición.
fuente
Python 3.5,
79747370 bytesAhorré 3 bytes al hacer un seguimiento de los dividendos, una idea que tomé de la respuesta CJam de @aditsu .
Probarlo en repl.it .
fuente
Jalea ,
1210 bytesAhorré 2 bytes al hacer un seguimiento de los dividendos, una idea que tomé de la respuesta CJam de @aditsu .
Pruébalo en línea!
Cómo funciona
fuente
Lenguaje GameMaker, 152 bytes
Basado en la respuesta de Kenny
fuente
Java, 122
Similar a mi solución CJam.
fuente
Perl 6 , 37 bytes
Si no le importa, solo funcionará con denominadores que se ajusten a un entero de 64 bits, puede eliminar la llamada al método
.FatRat
.Explicación:
Prueba:
fuente
Pyth, 63 bytes
Pruébalo en línea!
Traducción directa de la respuesta en Java .
fuente
PHP, 169 bytes
fuente