Casi el polo opuesto si este desafío, y sospecho que será un poco más fácil.
Su tarea es tomar dos enteros en el formato a/b(Formando un número racional) y luego generar el número en decimal exactamente.
Por ejemplo, si tuviera que ingresar 1/3, generaría:
0.33333333333333333
Y seguiría imprimiendo 3s hasta el final de los tiempos, con un 0 inicial opcional (también puede imprimir un carácter por línea si y solo si su idioma no permite imprimir en la misma línea).
El comportamiento para x/0será indefinido. Para un número que parece que no se repite (como, digamos 5/4), en realidad se repite. Cualquiera de las siguientes dos formas sería aceptable para 5/4:
1.25000000000000000
1.24999999999999999
(Lo mismo con números enteros, 1.9999999o 2.000000)
La fracción puede no estar en su forma más simple, y a, o bpuede ser negativo (Nota -a/b = -(a/b), -a/-b = a/b, a/-b = -a/b, y -.6249999no es válido, pero -0.6249999es aceptable, pero todavía se puede utilizar.
fuente

bco es trampa?ay / obser negativo?aobambos pueden ser negativos)Respuestas:
CJam,
3837 bytesCómo funciona
fuente
C, 108
79Editar modificado para trabajar con números negativos.
Entrada de stdin. Estilo antiguo de K&R.
fuente
Ruby,
83691029189 bytesImplementación simple de la división de enteros manual basada en la división de enteros de la computadora.
Gracias a @blutorange por la ayuda en el golf.
Editar: se corrigió la solución para incluir números negativos.
fuente
->s{a,b=s.split(?/).map &:to_i;$><<a/b<<?.;loop{a=a%b*10;$><<a/b}}me encanta esto de ruby.?/denotar caracteres, ni sabía sobre$><<imprimir o lalooppalabra clave. ¡¡Muchas gracias!!$>es la abreviatura de$stdouty<<es un operador. Puede guardar un byte más en la segunda línea cambiándolo ac*d<0&&$><<?-; unos pocos bytes combinando la tercera / cuarta línea a$><<a/b<<?., y uno más eliminando el espacio después<<de la última línea. Y aquí hay una idea para->s{a,b=s.scan(/\d+/).map &:to_i;1==s.count(?-)&&$><<?-;$><<a/b<<?.;loop{a=a%b*10;$><<a/b}}$><<a/bno funcionó correctamente, por eso puse el espacio allí. El resto parece bueno, muchas gracias!Rational(2,3) == 2/3r) desde ruby 2.1 (que aprendí hace unos 10 minutos) que se puede usar para acortar la segunda línea:eval(s+?r)<0&&$><<?-Java,
177176170El algoritmo es sencillo; La parte difícil fue hacer que la impresión funcionara. Al final, hice que la computadora durmiera por un segundo entre cada paso para poder imprimir.
Versión ampliada y ejecutable
fuente
R,
103137109103Un poco más feliz con esto ahora. El uso de escaneo con un separador ahorra muchos bytes. Puede que aún tenga margen de mejora. Sustituido
<-por=. No siempre he tenido la mejor de las suertes con esto, pero esta vez funcionó.Pruebas de funcionamiento
fuente
Python 3,
107115 bytesMuy claro:
-1/3->-0.)* (Aunque el cálculo para
ase movió dentro del bucle para guardar algunos bytes).Editar: Corregido error con fracciones negativas> -1.
fuente
Python 2.7, 209 bytes
editar:
Ahora genera todos los caracteres en la misma línea, como se le solicitó.edit2:
Ahora lee la fracción del argumento de la línea de comandos, según lo solicitado :)fuente
maplugar de la comprensión de la lista ahorra bastante; 2) no necesitan los paréntesis alrededorm*aen cualquiera de sus ubicaciones, como*,%y/son todos la misma prioridad y asociativo por la izquierda; 3) la lógica de 0 o punto en la línea 3 se puede simplificar"0."[m==1], ya que de todos modos solo la está imprimiendo; 4) probablemente guardará caracteres para simplemente establecero=stdout.writey convertir argumentos numéricos en cadenas con comillas invertidas según sea necesario.1/-3da en-1.666666666lugar de-0.333333333.