Implemente un algoritmo de división en su idioma favorito que maneje la división de enteros. Solo necesita manejar números positivos, pero puntos de bonificación si también maneja la división de signos negativos y mixtos. Los resultados se redondean hacia abajo para obtener resultados fraccionarios.
El programa no puede contener las /
, \
, div
o similares operadores. Debe ser una rutina que no utilice las capacidades de división nativas del lenguaje.
Solo necesita manejar una división de hasta 32 bits. No se permite la resta repetida.
Entrada
Tome dos entradas en stdin separadas por nuevas líneas o espacios (su elección)
740
2
Salida
En este caso, la salida sería 370
.
La solución que es la más corta gana.
code-golf
arithmetic
division
Thomas O
fuente
fuente
740,2
también está permitido para la entrada? es decir, separados por comas?Respuestas:
Python - 73 caracteres
Toma entradas separadas por comas, p. Ej.
740,2
fuente
JavaScript, 61
Esto hace que una cadena tenga la longitud del dividendo
,,,,,,
(6) y se divide en el divisor,,,
(3), lo que da como resultado una matriz de longitud 3: de['', '', '']
cuya longitud restaré una. Definitivamente no es el más rápido, pero espero que sea interesante.fuente
A=Array,P=prompt,P((''+A(+P())).split(','+A(+P())).length)
JavaScript: 36 caracteres
fuente
alert
con lep
dará algunos caracteres adicionales. :)Mathematica: 34 caracteres
Resuelve simbólicamente la ecuación (xa == b)
fuente
Solve[x#==#2]&@@Input[]
Python - 72 caracteres
Toma entradas separadas por comas, p. Ej. 740,2
fuente
Python, 37
Paso 1. Convertir a unario.
Paso 2. Algoritmo de división unaria.
fuente
Python - 41 caracteres
Toma entradas separadas por comas, p. Ej.
740,2
fuente
Python, 70
Algo loco que acabo de pensar (usando una entrada separada por comas):
Si acepta pequeños errores de precisión de flotación, la
round
función se puede descartar.fuente
Yabasic - 17 caracteres
fuente
PHP - 82 caracteres (buggy)
Sin embargo, esta es una solución muy simple: no maneja fracciones o signos diferentes (saltaría a un bucle infinito). No voy a entrar en detalles en este caso, es bastante simple.
La entrada está en stdin, separada por una nueva línea.
PHP - 141 caracteres (completo)
Entrada y salida igual que la anterior.
Sí, esto es casi el doble del tamaño del anterior, pero:
Reformatear y explicar:
fuente
Ruby 1.9, 28 caracteres
Resto de división, 21 caracteres.
Muestra:
Para Ruby 1.8:
fuente
('a'*a+'b').split('a'*b).size-1
, 3 caracteres más grandes.APL (6)
/
no es división aquí, perofoldr
. es decir,F/a b c
esa F (b F c)
. Si no puedo usarfoldr
porque se llama/
, se puede hacer en 9 caracteres:Explicación:
⎕
:input()
⍟⎕
:map(log, input())
-/⍟⎕
:foldr1(sub, map(log, input()))
*-/⍟⎕
:exp(foldr1(sub, map(log, input())))
⌊*-/⍟⎕
:floor(exp(foldr1(sub, map(log, input()))))
fuente
PHP, 55 caracteres
Salida (740/2): http://codepad.viper-7.com/ucTlcq
fuente
<?$a=fgetcsv(STDIN);echo$a[0]*pow($a[1],-1);
solo use una coma en lugar de un espacio para separar los números.Scala 77
fuente
Haskell, 96 caracteres
La entrada está en una sola línea.
El código solo busca la respuesta tomando el divisor
d
y multiplicándolo contra todos los enterosn >= 0
. Deja quem
sea el dividendo. El más granden
tal quen * d <= m
se elige para ser la respuesta. El código recoge en realidad los menosn
tales quen * d > m
y resta 1 porque puedo dar el primer elemento de una lista de este tipo. En el otro caso, tendría que tomar el último, pero es difícil tomar el último elemento de una lista infinita. Bueno, se puede demostrar que la lista es finita, pero Haskell no sabe mejor cuando realiza el filtro, por lo que continúa filtrándose indefinidamente.fuente
Lisp común, 42 caracteres
Acepta espacios o entradas separadas por líneas
fuente
Golpetazo,
7264 caracteresGenere un número infinito de líneas nuevas, tome la primera x, colóquelas en un archivo llamado f, luego obtenga el tamaño de f en bloques del tamaño de y. Tomó el consejo de manatwork para afeitar a ocho personajes.
fuente
read x y
. Con unos pocos espacios más eliminados se puede reducir a 64 caracteres: pastebin.com/Y3SfSXWkPython - 45 caracteres
Toma entradas separadas por comas, p. Ej. 740,2
fuente
Python, 94 caracteres
Una búsqueda binaria recursiva:
fuente
Pitón, 148
Otras soluciones pueden ser cortas, pero ¿son escala web ?
Aquí hay una solución elegante y de tiempo constante que aprovecha el poder de la NUBE.
¿Mencioné que también usa Haskell?
fuente
Python, 46 bytes
Nadie había publicado la solución de resta aburrida, por lo que no pude resistirme a hacerlo.
fuente
Smalltalk , Squeak 4.x sabor
defina este mensaje binario en Integer:
Una vez golfizado, este cociente aún es largo (88 caracteres):
Pero es razonablemente rápido:
-> 127 ms en mi modest mac mini (8 MOp / s)
En comparación con la división regular:
-> 31 ms, es solo 4 veces más lento
No cuento los caracteres para leer stdin o escribir stdout, Squeak no fue diseñado para scripting.
Por supuesto, una sustracción repetida más estúpida
o simple enumeración estúpida
podría funcionar también, pero no son realmente interesantes
fuente
fuente
DC: 26 caracteres
Admito que no es la solución más rápida.
fuente
Python 54
Toma entrada delimitada por comas.
¿Palabras porque Markdown muere con una lista seguida de código ?:
fuente
Q, 46
.
fuente
Referencia: http://www.forums.hscripts.com/viewtopic.php?f=13&t=1358
fuente
Python, 40 caracteres
fuente
Python, 37
Construye una cadena de longitud
x
('0'*x
) y utiliza un corte extendido para seleccionar caday
carácter, comenzando desde el índicey-1
. Imprime la longitud de la cadena resultante.Al igual que Gnibbler, esto toma entradas separadas por comas. Eliminarlo cuesta
9
caracteres:fuente
Retina 0.7.3, 33 bytes (no compite)
El lenguaje es más nuevo que el desafío. Toma entrada separada por espacios con el divisor primero. La división por cero no está definida.
Pruébalo en línea
fuente