Zadanie
Biorąc pod uwagę dwie dodatnie liczby całkowite (divId e II i Divis O r) oblicz q uotient i r emainder.
Zwykle oblicza się to jako e = o*q+r
gdzie q*o<=e
i 0<=r<o
.
Do tego wyzwania wciąż, e = o*q+r
ale q*o>=e
i -o<r<=0
.
Na przykład e=20
i o=3
zwykle byłoby tak 20/3 -> 20=3*6+2
, ponieważ 18<=20
i 0<=2<3
. Tutaj będzie 20/3 -> 20=3*7-1
gdzie 21>=20
i-3<-1<=0
Przypadki testowe
Input -> Output
20, 3 -> 7, -1
10, 5 -> 2, 0
7, 20 -> 1, -13
100, 13 -> 8, -4
Nie musisz się tym zajmować o=0
.
r
jako negacja języka rzeczywistegor
dla języków, które używają niepodpisanych bajtów do przechowywania danych lub zakładają przepełnienie? (-1
→1
/255
)Odpowiedzi:
Python 3 ,
3926 bajtówMartin Ender zapisał 13 bajtów
Wypróbuj online!
Python 2 , 25 bajtów
Wypróbuj online!
źródło
x%-y
żeby zdobyć resztę.(-(x//-y),x%-y)
Galaretka , 3 bajty
Wypróbuj online!
Jak to działa
Ponownie nadużywam divmod \ o /. Spójrz, nie ma unicode!
źródło
Haskell , 25 bajtów
Wypróbuj online!
źródło
Mathematica, 21 bajtów
Wypróbuj online!
źródło
⌈#/#2⌉
oblicza pułap swojego podziału i przechowuje go w zmiennejs
, a następnie odejmuje argument 2 * s od argumentu 1.05AB1E , 4 bajty
Wypróbuj online!
5 bajtów
Wypróbuj online!
Jak oni pracują
Nadużywa modulo Pythona! \ o /
źródło
J
prawda? Nigdy wcześniej tego nie widziałem. Zdecydowanie może się przydać.J
: P5)6
daje['5']6
:)Alice , 15 bajtów
Wypróbuj online!
Wyjaśnienie
Podział liczb całkowitych i moduł Rubiego (na których zaimplementowane są Alicja) są zdefiniowane w taki sposób, że użycie dzielnika ujemnego już robi to, co chcemy. Jeśli zanegujemy dzielnik, automatycznie otrzymujemy poprawne modulo i otrzymujemy minus pożądany iloraz. Najłatwiejszym sposobem na rozwiązanie tego problemu jest zanegowanie szeregu liczb:
źródło
Pari / GP , 18 bajtów
Wypróbuj online!
źródło
Julia , 18 bajtów
Wypróbuj online!
.-
jest elementarną negacją ifldmod
zwraca krotkę złożoną z wyników dywizji floored i odpowiadającej jej pozostałości.źródło
MATL ,
54 bajtówWypróbuj online!
-1 bajt dzięki Luis Mendo
źródło
J , 16 bajtów
Jest to zasadniczo rozwiązanie Mathematica Jenny_mathy's przepisane w J.
Jak to działa:
a=.>.@%
Znajduje pułap podziału argumentów lewego i prawego i przechowuje go w zmiennej a,~
konkatenowane do (odwrócone)([-]*a)
odejmuje * lewy argument od prawego argumentuWypróbuj online!
źródło
R ,
3129 bajtów-2 bajty dzięki Giuseppe
Wypróbuj online!
źródło
-c(e%/%-o,-e%%o)
Common Lisp, 7 bajtów
Wbudowana funkcja
ceiling
zwraca dwie wartości: pułap ilorazu, a resztę dopasowuje:źródło
JavaScript (ES6),
3731292725 bajtówZaoszczędzono 2 bajty dzięki @Rod
Zaoszczędzono 2 bajty dzięki @ETHproductions
Pobiera dane wejściowe w składni curry. Zwraca [q, r] .
Przypadki testowe
Pokaż fragment kodu
źródło
q=(a+b-1)/b+|0
zamiast tegoq=a/b+.9|0
Perl 5 , 30 + 1 (
-p
) = 31 bajtówWypróbuj online!
źródło
4 ,
5550 bajtówWypróbuj online!
Reprezentuje przypomnienie przez negację (
10
zamiast-10
), ponieważ język używa bajtów na wejściu i wyjściu, uznanych za poprawne przez komentarz OP.źródło
Komentator , 90 bajtów
Wypróbuj online!
Zwraca resztę, a następnie iloraz nowej linii oddzielony.
źródło
C (gcc) , 43 bajty
Stosowanie
Wypróbuj online!
źródło
Java (OpenJDK 8) , 30 bajtów
Wypróbuj online!
źródło
Dodaj ++ , 35 bajtów
Wypróbuj online!
źródło
C (gcc) 41 bajtów
Może to być oszustwo, korzystanie z dwóch funkcji i może nie powieść się w innych testach?
Wypróbuj online
źródło
Szybki , 47 bajtów
źródło
SNOBOL4 (CSNOBOL4) ,
124123105 bajtówWypróbuj online!
Staje się jako wejście
E
, a następnieO
, oddzielona od nowej linii i drukuje na zewnątrzQ
, a następnieR
oddzielone linią.źródło
TXR: 8 bajtów
Wbudowana funkcja
ceil-rem
. Np .(ceil-rem 20 7)
Plony(7 -1)
.źródło
Czysty , 42 bajty
Wypróbuj online!
źródło
Najgorsze , 23 bajty
Wypróbuj online!
Jak to działa
źródło