Tarea
Dados dos números enteros positivos (divId e nd y divis o r), calculan la q uotient y el r emainder.
Normalmente se calcularía como e = o*q+r
dónde q*o<=e
y 0<=r<o
.
Para este desafío sigue siendo e = o*q+r
pero q*o>=e
y -o<r<=0
.
Por ejemplo , e=20
y o=3
normalmente sería 20/3 -> 20=3*6+2
, ya que 18<=20
y 0<=2<3
. Aquí será 20/3 -> 20=3*7-1
donde 21>=20
y-3<-1<=0
Casos de prueba
Input -> Output
20, 3 -> 7, -1
10, 5 -> 2, 0
7, 20 -> 1, -13
100, 13 -> 8, -4
No necesitas manejarlo o=0
.
code-golf
arithmetic
number-theory
division
varilla
fuente
fuente
r
como la negación de lo realr
para los idiomas que usan bytes sin firmar para almacenar datos o asumir un desbordamiento? (-1
→1
/255
)Respuestas:
Python 3 ,
3926 bytesMartin Ender ahorró 13 bytes
Pruébalo en línea!
Python 2 , 25 bytes
Pruébalo en línea!
fuente
x%-y
para obtener el resto.(-(x//-y),x%-y)
Jalea , 3 bytes
Pruébalo en línea!
Cómo funciona
Abusando de divmod nuevamente \ o /. Mira ma 'no unicode!
fuente
Haskell , 25 bytes
Pruébalo en línea!
fuente
Mathematica, 21 bytes
Pruébalo en línea!
fuente
⌈#/#2⌉
calcula el límite máximo de su división, y lo almacena en una variables
, y luego resta el argumento 2 * s del argumento 1.05AB1E , 4 bytes
Pruébalo en línea!
5 bytes
Pruébalo en línea!
Cómo trabajan ellos
Abusa del módulo de Python! \ o /
fuente
J
¿no? Nunca he visto eso antes. Definitivamente podría ser útil.J
antes: P5)6
da['5']6
:)Alice , 15 bytes
Pruébalo en línea!
Explicación
La división de enteros y el módulo de Ruby (en los que se implementan los de Alice) se definen de tal manera que usar un divisor negativo ya hace lo que queremos. Si negamos el divisor, obtenemos automáticamente el módulo correcto, y obtenemos menos el cociente que queremos. Entonces, la forma más fácil de resolver esto es negando un montón de números:
fuente
Pari / GP , 18 bytes
Pruébalo en línea!
fuente
Julia , 18 bytes
Pruébalo en línea!
.-
es una negación sabia del elemento, yfldmod
devuelve una tupla hecha de los resultados de la división con piso y el residuo correspondiente.fuente
MATL ,
54 bytesPruébalo en línea!
-1 byte gracias a Luis Mendo
fuente
J , 16 bytes
Esta es esencialmente la solución de Mathematica de Jenny_mathy reescrita en J.
Cómo funciona:
a=.>.@%
Encuentra el límite máximo de la división de los argumentos izquierdo y derecho y lo almacena en la variable a,~
concatenado a (invertido)([-]*a)
resta un * argumento derecho del argumento izquierdoPruébalo en línea!
fuente
R ,
3129 bytes-2 bytes gracias a Giuseppe
Pruébalo en línea!
fuente
-c(e%/%-o,-e%%o)
Lisp común, 7 bytes
La función incorporada
ceiling
devuelve dos valores: el techo del cociente y el resto para que coincida:fuente
JavaScript (ES6),
3731292725 bytesSaved 2 bytes thanks to @Rod
Saved 2 bytes thanks to @ETHproductions
Takes input in currying syntax. Returns [q,r].
Test cases
Show code snippet
fuente
q=(a+b-1)/b+|0
insteadq=a/b+.9|0
Perl 5, 30 + 1 (
-p
) = 31 bytesTry it online!
fuente
4,
5550 bytesTry it online!
Representa el recordatorio por su negación (en
10
lugar de-10
), ya que el lenguaje utiliza la entrada y salida de bytes, considerada válida por el comentario de OP.fuente
Comentarista , 90 bytes
Pruébalo en línea!
Emite el resto, luego el cociente, nueva línea separada.
fuente
C (gcc) , 43 bytes
Uso
Pruébalo en línea!
fuente
Java (OpenJDK 8) , 30 bytes
Pruébalo en línea!
fuente
Agregar ++ , 35 bytes
Pruébalo en línea!
fuente
C (gcc) 41 bytes
Esto puede ser trampa, utilizando dos funciones y puede fallar otras pruebas?
Pruébalo en línea
fuente
Swift , 47 bytes
fuente
SNOBOL4 (CSNOBOL4) ,
124123105 bytesPruébalo en línea!
Toma datos como
E
, entoncesO
, separados por una nueva línea e imprimeQ
, luegoR
, separados por una nueva línea.fuente
TXR: 8 bytes
Construido en función
ceil-rem
. Por ejemplo,(ceil-rem 20 7)
rendimientos(7 -1)
.fuente
Limpio , 42 bytes
Pruébalo en línea!
fuente
Deorst , 23 bytes
Pruébalo en línea!
Cómo funciona
fuente