Tâche
Étant donné deux entiers positifs (div e e et divis o r), calculez le q uotient et le r emainder.
Normalement, il serait calculé comme e = o*q+r
où q*o<=e
et 0<=r<o
.
Pour ce défi encore e = o*q+r
mais q*o>=e
et -o<r<=0
.
Par exemple, e=20
et o=3
, normalement, ce serait 20/3 -> 20=3*6+2
, depuis 18<=20
et 0<=2<3
. Ici ce sera 20/3 -> 20=3*7-1
où 21>=20
et-3<-1<=0
Cas de test
Input -> Output
20, 3 -> 7, -1
10, 5 -> 2, 0
7, 20 -> 1, -13
100, 13 -> 8, -4
Vous n'avez pas besoin de gérer o=0
.
r
comme négation du réelr
pour les langues qui utilisent des octets non signés pour stocker des données ou supposent un débordement? (-1
→1
/255
)Réponses:
Python 3 ,
3926 octetsMartin Ender économisé 13 octets
Essayez-le en ligne!
Python 2 , 25 octets
Essayez-le en ligne!
la source
x%-y
pour obtenir le reste.(-(x//-y),x%-y)
Gelée , 3 octets
Essayez-le en ligne!
Comment ça fonctionne
Abuser à nouveau de divmod \ o /. Regardez ma pas unicode!
la source
Haskell , 25 octets
Essayez-le en ligne!
la source
Mathematica, 21 octets
Essayez-le en ligne!
la source
⌈#/#2⌉
calcule le plafond de leur division, et le stocke dans une variables
, puis soustrait l'argument 2 * de l'argument 1.05AB1E , 4 octets
Essayez-le en ligne!
5 octets
Essayez-le en ligne!
Comment ils travaillent
Abuse le modulo de Python! \ o /
la source
J
n'est-ce pas?. Jamais vu ça auparavant. Cela pourrait certainement être utile.J
auparavant: P5)6
donne['5']6
:)Alice , 15 octets
Essayez-le en ligne!
Explication
La division entière de Ruby et le module (sur lequel Alice est implémenté) sont définis de telle sorte que l'utilisation d'un diviseur négatif fait déjà en quelque sorte ce que nous voulons. Si nous annulons le diviseur, nous obtenons automatiquement le bon module, et nous obtenons moins le quotient que nous voulons. Donc, la façon la plus simple de résoudre ce problème est de nier un tas de nombres:
la source
Pari / GP , 18 octets
Essayez-le en ligne!
la source
Julia , 18 octets
Essayez-le en ligne!
.-
est une négation élément par élément etfldmod
renvoie un tuple composé des résultats de la division au sol et du résidu correspondant.la source
MATL ,
54 octetsEssayez-le en ligne!
-1 octet grâce à Luis Mendo
la source
J , 16 octets
Il s'agit essentiellement de la solution Mathematica de Jenny_mathy réécrite en J.
Comment ça fonctionne:
a=.>.@%
Trouve le plafond de la division des arguments gauche et droit et le stocke dans la variable a,~
concaténé en (inversé)([-]*a)
soustrait un argument * droit de l'argument gaucheEssayez-le en ligne!
la source
R ,
3129 octets-2 octets grâce à Giuseppe
Essayez-le en ligne!
la source
-c(e%/%-o,-e%%o)
Lisp commun, 7 octets
La fonction intégrée
ceiling
renvoie deux valeurs: le plafond du quotient et le reste correspondant:la source
JavaScript (ES6),
3731292725 octets2 octets enregistrés grâce à @Rod
2 octets enregistrés grâce à @ETHproductions
Prend des entrées dans la syntaxe de curry. Renvoie [q, r] .
Cas de test
Afficher l'extrait de code
la source
q=(a+b-1)/b+|0
placeq=a/b+.9|0
Perl 5 , 30 + 1 (
-p
) = 31 octetsEssayez-le en ligne!
la source
4 ,
5550 octetsEssayez-le en ligne!
Représente le rappel par sa négation (
10
au lieu de-10
), car le langage utilise des entrées et des sorties d'octets, jugées valides par le commentaire OP.la source
Commentateur , 90 octets
Essayez-le en ligne!
Sort le reste, puis le quotient, la nouvelle ligne est séparée.
la source
C (gcc) , 43 octets
Usage
Essayez-le en ligne!
la source
Java (OpenJDK 8) , 30 octets
Essayez-le en ligne!
la source
Ajouter ++ , 35 octets
Essayez-le en ligne!
la source
C (gcc) 41 octets
Cela peut être de la triche, en utilisant deux fonctions et cela peut échouer à d'autres tests?
Essayez-le en ligne
la source
Swift , 47 octets
la source
SNOBOL4 (CSNOBOL4) ,
124123105 octetsEssayez-le en ligne!
Prend l'entrée comme
E
, puisO
, séparé par un retour à la ligne et imprimeQ
, puisR
, séparé par un retour à la ligne.la source
TXR: 8 octets
Fonction intégrée
ceil-rem
. Par exemple, les(ceil-rem 20 7)
rendements(7 -1)
.la source
Nettoyer , 42 octets
Essayez-le en ligne!
la source
Deorst , 23 octets
Essayez-le en ligne!
Comment ça fonctionne
la source