Escriba un programa que visualice una división larga con el arte ASCII. La entrada consta de dos enteros, un numerador y un denominador, utilizando el formato de entrada que elija.
Ejemplos:
1234 ÷ 56:
22
----
56|1234
112
---
114
112
---
2
1002012 ÷ 12:
83501
-------
12|1002012
96
---
42
36
--
60
60
--
12
12
--
0 ÷ 35
0
-
35|0
Reglas:
- El uso del operador de división del lenguaje de programación es permitido.
- El uso de soporte de enteros grandes también está permitido.
- Por consistencia:
- Si el cociente es cero, imprima un solo cero al final del trampolín.
- Si el resto es cero, no lo imprima.
- No imprima ceros a la izquierda en ningún número.
- Se permiten líneas nuevas en exceso al final y espacios finales a la derecha.
- La solución con la menor cantidad de personajes gana.
Límites:
- 0 <= numerador <= 10 72 - 1
- 1 <= denominador <= 9999999
Esto implica que el resultado nunca será más ancho que 80 columnas.
Conjunto de pruebas e implementación de muestra:
Puede usar long-division.c ( gist ) para probar su programa. En realidad es un script bash con un programa en C dentro. Ajústelo para invocar su programa en el conjunto de pruebas. Mire el código C en la parte inferior para ver la implementación de referencia. Avíseme si hay algún problema con el programa de muestra o el conjunto de pruebas.
$ ./long-division.c 10 7
1
--
7|10
7
--
3
$ ./long-division.c
PASS 1234 ÷ 56
PASS 1002012 ÷ 12
PASS 1 ÷ 1
--- snip ---
Score: 35 / 35
All tests passed!
Editar: a pedido, pongo la entrada del conjunto de pruebas y la salida esperada en archivos de texto ( gist ). Uso de muestra (bash):
cat input | while read nd; do
./program $nd |
sed 's/\s*$//' | sed -e :a -e '/^\n*$/{$d;N;};/\n$/ba'
done > output
diff -u expected output
Los comandos sed extraños filtran las nuevas líneas y espacios finales de la salida del programa.
fuente
Respuestas:
Python 3,
284257 caracteresdiv.py
Uso:
python3 div.py
Entrada: desde el teclado
prueba.py
salida partidos esperada
Versiones:
1. 284
2. 257 :
s,z,f=0,0,0
→s=z=f=0
;z and f
→z*f
; mejor bucle; eliminado algunas líneas nuevas.fuente
Haskell, 320 caracteres
Pasa todas las pruebas. Si bien es esto bastante golf, creo que todavía hay mucho más por hacer aquí ...
read
llamadas, lo que reduce la necesidad de llamarshow
, lo suficienteshow
como para abreviar yas
que no vale la pena.fuente
-XUnicodeSyntax
).JavaScript (
400394418)NOTA: por tentador que parezca eliminar algunos caracteres reemplazándolos
c=(c==0)?
conc=!c?
, no es utilizable porque causa errores relacionados con el punto flotante.http://jsfiddle.net/nLzYW/9/
Ejecución de muestra:
Edición 1 : correcciones de errores menores, numerosas optimizaciones de código.
Edición 2 : corrige el error con 1/7 generando salida adicional.
fuente
d(1,7)
(y pruebas similares) repite el denominador en lugar de no imprimir nada. Esto está mal porque este número debe ser el dígito del cociente multiplicado por el denominador, que es cero.Javascript: (372)
Invocar usando i (divisor, número). Codegolfed JS: http://jsfiddle.net/puckipedia/EP464/ Ungolfed (holandés) JS: http://jsfiddle.net/puckipedia/M82VM/
Devuelve la división larga (en formato holandés como la aprendí):
Caso de prueba:
fuente