Tugas
Mengingat dua bilangan bulat positif (divid e nd dan divis o r), menghitung q uotient dan r emainder.
Biasanya itu akan dihitung sebagai e = o*q+r
mana q*o<=e
dan 0<=r<o
.
Untuk tantangan ini, masih e = o*q+r
tetapi q*o>=e
dan -o<r<=0
.
Sebagai contoh e=20
dan o=3
, biasanya 20/3 -> 20=3*6+2
, sejak 18<=20
dan 0<=2<3
. Ini dia akan 20/3 -> 20=3*7-1
dimana 21>=20
dan-3<-1<=0
Uji Kasus
Input -> Output
20, 3 -> 7, -1
10, 5 -> 2, 0
7, 20 -> 1, -13
100, 13 -> 8, -4
Anda tidak perlu menangani o=0
.
code-golf
arithmetic
number-theory
division
tongkat
sumber
sumber
r
sebagai keluaran sebagai negasi dari yang nyatar
untuk bahasa yang menggunakan byte yang tidak ditandatangani untuk menyimpan data atau menganggap meluap? (-1
→1
/255
)Jawaban:
Python 3 ,
3926 byteMartin Ender menyimpan 13 byte
Cobalah online!
Python 2 , 25 byte
Cobalah online!
sumber
x%-y
untuk mendapatkan sisanya.(-(x//-y),x%-y)
Jelly , 3 byte
Cobalah online!
Bagaimana itu bekerja
Divmod penyalahgunaan lagi \ o /. Lihatlah, bukan unicode!
sumber
Haskell , 25 byte
Cobalah online!
sumber
Mathematica, 21 byte
Cobalah online!
sumber
⌈#/#2⌉
menghitung batas atas divisi mereka, dan menyimpannya dalam variabels
, dan kemudian mengurangi argumen 2 * dari argumen 1.05AB1E , 4 byte
Cobalah online!
5 byte
Cobalah online!
Bagaimana mereka bekerja
Menyalahgunakan modulo Python! \Hai/
sumber
J
bukan? Belum pernah melihat itu sebelumnya. Pasti bisa bermanfaat.J
sebelumnya: P5)6
memberikan['5']6
:)Alice , 15 byte
Cobalah online!
Penjelasan
Divisi integer Ruby dan modulo (yang menerapkan Alice) didefinisikan sedemikian rupa sehingga menggunakan pembagi negatif sudah semacam melakukan apa yang kita inginkan. Jika kita meniadakan pembagi kita secara otomatis mendapatkan modulo yang benar, dan kita mendapatkan minus hasil bagi yang kita inginkan. Jadi cara termudah untuk menyelesaikan ini adalah dengan meniadakan banyak angka:
sumber
Pari / GP , 18 byte
Cobalah online!
sumber
Julia , 18 byte
Cobalah online!
.-
adalah elemen negasi yang bijaksana, danfldmod
mengembalikan tuple yang terbuat dari hasil pembagian lantai dan residu yang sesuai.sumber
MATL ,
54 byteCobalah online!
-1 byte terima kasih kepada Luis Mendo
sumber
J , 16 byte
Ini pada dasarnya adalah solusi Mathematica Jenny_mathy yang ditulis ulang dalam J.
Bagaimana itu bekerja:
a=.>.@%
Menemukan batas pembagian argumen kiri dan kanan dan menyimpannya ke dalam variabel a,~
digabungkan ke (terbalik)([-]*a)
kurangi argumen * kanan dari argumen kiriCobalah online!
sumber
R ,
3129 byte-2 byte terima kasih kepada Giuseppe
Cobalah online!
sumber
-c(e%/%-o,-e%%o)
Gangguan Umum, 7 byte
Fungsi
ceiling
bawaan mengembalikan dua nilai: langit-langit hasil bagi, dan sisanya untuk mencocokkan:sumber
JavaScript (ES6),
3731292725 byteDisimpan 2 byte berkat @Rod
Disimpan 2 byte berkat @ETHproduksi
Mengambil input dalam sintaks currying. Mengembalikan [q, r] .
Uji kasus
Tampilkan cuplikan kode
sumber
q=(a+b-1)/b+|0
sebagai gantinyaq=a/b+.9|0
Perl 5 , 30 + 1 (
-p
) = 31 byteCobalah online!
sumber
4 ,
5550 byteCobalah online!
Merupakan pengingat oleh negasi itu (
10
bukan-10
), karena bahasa menggunakan input dan output byte, dianggap valid oleh komentar OP.sumber
Komentator , 90 byte
Cobalah online!
Keluarkan sisanya, lalu hasil bagi, baris baru dipisahkan.
sumber
C (gcc) , 43 byte
Pemakaian
Cobalah online!
sumber
Java (OpenJDK 8) , 30 byte
Cobalah online!
sumber
Tambahkan ++ , 35 byte
Cobalah online!
sumber
C (gcc) 41 byte
Ini mungkin curang, menggunakan dua fungsi dan mungkin gagal tes lainnya?
Cobalah online
sumber
Swift , 47 byte
sumber
SNOBOL4 (CSNOBOL4) ,
124123105 byteCobalah online!
Mengambil input sebagai
E
, kemudianO
, dipisahkan oleh baris baru dan mencetakQ
, kemudianR
, dipisahkan oleh baris baru.sumber
TXR: 8 byte
Fungsi bawaan
ceil-rem
. Misalnya(ceil-rem 20 7)
hasil(7 -1)
.sumber
Bersih , 42 byte
Cobalah online!
sumber
Deorst , 23 byte
Cobalah online!
Bagaimana itu bekerja
sumber