Aufgabe
Gegeben seien zwei positive ganze Zahlen (divid e nd und divis o r), berechnen die q uotient und die r emainder.
Normalerweise würde es als e = o*q+r
wo q*o<=e
und berechnet werden 0<=r<o
.
Für diese Herausforderung gibt es e = o*q+r
aber noch q*o>=e
und -o<r<=0
.
Zum Beispiel e=20
und o=3
normalerweise wäre es 20/3 -> 20=3*6+2
, da 18<=20
und 0<=2<3
. Hier wird es 20/3 -> 20=3*7-1
wo 21>=20
und sein-3<-1<=0
Testfälle
Input -> Output
20, 3 -> 7, -1
10, 5 -> 2, 0
7, 20 -> 1, -13
100, 13 -> 8, -4
Du musst nicht damit umgehen o=0
.
r
als Negation des Realwertsr
für Sprachen auszugeben , die vorzeichenlose Bytes verwenden, um Daten zu speichern oder einen Überlauf anzunehmen? (-1
→1
/255
)Antworten:
Python 3 ,
3926 BytesMartin Ender sparte 13 Bytes
Probieren Sie es online!
Python 2 , 25 Bytes
Probieren Sie es online!
quelle
x%-y
, um den Rest zu bekommen.(-(x//-y),x%-y)
Gelee , 3 Bytes
Probieren Sie es online!
Wie es funktioniert
Missbrauche divmod nochmal \ o /. Schau ma 'kein Unicode!
quelle
Haskell , 25 Bytes
Probieren Sie es online!
quelle
Mathematica, 21 Bytes
Probieren Sie es online!
quelle
⌈#/#2⌉
berechnet die Obergrenze ihrer Division, speichert sie in einer Variablens
und subtrahiert dann Argument 2 * s von Argument 1.05AB1E , 4 Bytes
Probieren Sie es online!
5 Bytes
Probieren Sie es online!
Wie sie arbeiten
Missbrauch von Pythons Modulo! \Ö/
quelle
J
nicht wahr ?. Das habe ich noch nie gesehen. Könnte auf jeden Fall nützlich sein.J
: P5)6
gibt['5']6
:)Alice , 15 Bytes
Probieren Sie es online!
Erläuterung
Rubys Integer Division und Modulo (auf denen Alice implementiert ist) sind so definiert, dass die Verwendung eines negativen Divisors bereits sozusagen das tut, was wir wollen. Wenn wir den Divisor negieren, erhalten wir automatisch das richtige Modulo und wir erhalten minus dem Quotienten, den wir wollen. Der einfachste Weg, dies zu lösen, besteht darin, eine Reihe von Zahlen zu negieren:
quelle
Pari / GP , 18 Bytes
Probieren Sie es online!
quelle
Julia , 18 Bytes
Probieren Sie es online!
.-
ist eine elementweise Negation undfldmod
gibt ein Tupel aus den Ergebnissen der Bodendivision und den entsprechenden Resten zurück.quelle
MATL ,
54 BytesProbieren Sie es online!
-1 Byte dank Luis Mendo
quelle
J , 16 Bytes
Dies ist im Wesentlichen die Mathematica-Lösung von Jenny_mathy, die in J umgeschrieben wurde.
Wie es funktioniert:
a=.>.@%
Findet die Obergrenze der Aufteilung der linken und rechten Argumente und speichert sie in der Variablen a,~
verkettet zu (umgekehrt)([-]*a)
Subtrahiert ein * rechtes Argument vom linken ArgumentProbieren Sie es online!
quelle
R ,
3129 Bytes-2 Bytes dank Giuseppe
Probieren Sie es online!
quelle
-c(e%/%-o,-e%%o)
Common Lisp, 7 Bytes
Die integrierte Funktion
ceiling
gibt zwei Werte zurück: die Obergrenze des Quotienten und den Rest der Übereinstimmung:quelle
JavaScript (ES6),
3731292725 Byte2 Bytes dank @Rod
gespeichert 2 Bytes dank @ETHproductions gespeichert
Übernimmt Eingaben in der Currying-Syntax. Gibt [q, r] zurück .
Testfälle
Code-Snippet anzeigen
quelle
q=(a+b-1)/b+|0
stattdessenq=a/b+.9|0
Perl 5 , 30 + 1 (
-p
) = 31 BytesProbieren Sie es online!
quelle
4 ,
5550 BytesProbieren Sie es online!
Stellt die Erinnerung durch ihre Negation dar (
10
anstelle von-10
), da die Sprache die Byte-Eingabe und -Ausgabe verwendet, die durch den OP-Kommentar als gültig erachtet wird.quelle
Kommentator , 90 Bytes
Probieren Sie es online!
Gibt den Rest und dann den Quotienten aus, wobei die Zeilenumbrüche getrennt werden.
quelle
C (gcc) , 43 Bytes
Verwendung
Probieren Sie es online!
quelle
Java (OpenJDK 8) , 30 Byte
Probieren Sie es online!
quelle
Add ++ , 35 Bytes
Probieren Sie es online!
quelle
C (gcc) 41 Bytes
Dies kann ein Betrug sein, der zwei Funktionen verwendet und andere Tests nicht bestehen kann.
Probieren Sie es online aus
quelle
Schnell , 47 Bytes
quelle
SNOBOL4 (CSNOBOL4) ,
124123105 BytesProbieren Sie es online!
Nimmt als Eingabe
E
, dannO
getrennt, durch eine neue Zeile und drucktQ
, dannR
, durch eine neue Zeile getrennt werden .quelle
TXR: 8 Bytes
Eingebaute Funktion
ceil-rem
. ZB(ceil-rem 20 7)
ergibt(7 -1)
.quelle
Sauber , 42 Bytes
Probieren Sie es online!
quelle
Deorst , 23 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle