Terapkan algoritma divisi dalam bahasa favorit Anda yang menangani divisi integer. Itu hanya perlu menangani angka positif - tetapi poin bonus jika menangani divisi negatif dan campuran juga. Hasil dibulatkan ke bawah untuk hasil fraksional.
Program ini mungkin tidak berisi /
, \
, div
atau serupa operator. Itu harus berupa rutinitas yang tidak menggunakan kemampuan pembagian asli bahasa.
Anda hanya perlu menangani divisi hingga 32-bit. Tidak boleh menggunakan pengurangan berulang.
Memasukkan
Ambil dua input pada stdin yang dipisahkan oleh garis atau spasi baru (pilihan Anda)
740
2
Keluaran
Dalam hal ini, hasilnya adalah 370
.
Solusi yang merupakan kemenangan tersingkat.
code-golf
arithmetic
division
Thomas O
sumber
sumber
740,2
juga diizinkan untuk input? yaitu dipisahkan koma?Jawaban:
Python - 73 karakter
Mengambil input yang dipisahkan koma, mis
740,2
sumber
JavaScript, 61
Ini membuat string panjang dividen
,,,,,,
(6) dan terbagi pada pembagi,,,
(3), menghasilkan array dengan panjang 3['', '', '']
:, yang panjangnya saya kurangi satu dari. Jelas bukan yang tercepat, tapi semoga menarik!sumber
A=Array,P=prompt,P((''+A(+P())).split(','+A(+P())).length)
JavaScript - 36 karakter
sumber
alert
denganp
akan memberi Anda beberapa karakter tambahan. :)Mathematica: 34 karakter
Memecahkan persamaan secara simbolis (xa == b)
sumber
Solve[x#==#2]&@@Input[]
Python - 72 karakter
Mengambil input yang dipisahkan koma, misalnya 740,2
sumber
Python, 37
Langkah 1. Konversikan ke unary.
Langkah 2. Algoritma pembagian unary.
sumber
Python - 41 karakter
Mengambil input yang dipisahkan koma, mis
740,2
sumber
Python, 70
Sesuatu yang gila saya hanya berpikir (menggunakan input yang dipisahkan koma):
Jika Anda menerima kesalahan presisi float kecil,
round
fungsinya dapat dijatuhkan.sumber
Yabasic - 17 karakter
sumber
PHP - 82 karakter (buggy)
Namun, ini adalah solusi yang sangat sederhana - ini tidak menangani pecahan atau tanda yang berbeda (akan melompat ke loop tak terhingga). Saya tidak akan menjelaskan secara detail, ini cukup sederhana.
Input dalam stdin, dipisahkan oleh baris baru.
PHP - 141 karakter (penuh)
Input dan output sama dengan yang sebelumnya.
Ya, ini hampir dua kali ukuran dari yang sebelumnya, tetapi ini:
Format ulang dan penjelasan:
sumber
Ruby 1.9, 28 karakter
Sisa pembagian, 21 karakter
Sampel:
Untuk Ruby 1.8:
sumber
('a'*a+'b').split('a'*b).size-1
, 3 karakter lebih besar.APL (6)
/
bukan pembagian di sini, tapifoldr
. yaitu,F/a b c
adalaha F (b F c)
. Jika saya tidak dapat menggunakanfoldr
karena namanya/
, itu dapat dilakukan dalam 9 karakter:Penjelasan:
⎕
:input()
⍟⎕
:map(log, input())
-/⍟⎕
:foldr1(sub, map(log, input()))
*-/⍟⎕
:exp(foldr1(sub, map(log, input())))
⌊*-/⍟⎕
:floor(exp(foldr1(sub, map(log, input()))))
sumber
PHP, 55 karakter
Output (740/2): http://codepad.viper-7.com/ucTlcq
sumber
<?$a=fgetcsv(STDIN);echo$a[0]*pow($a[1],-1);
Cukup gunakan koma alih-alih ruang untuk memisahkan angka.Scala 77
sumber
Haskell, 96 karakter
Input ada pada satu baris.
Kode hanya mencari jawaban dengan mengambil pembagi
d
dan mengalikannya dengan semua bilangan bulatn >= 0
. Membiarkanm
menjadi dividen. Pilihan terbesarn
yangn * d <= m
dipilih menjadi jawabannya. Kode sebenarnya mengambil sedikitn
sehinggan * d > m
dan mengurangi 1 dari itu karena saya dapat mengambil elemen pertama dari daftar tersebut. Dalam kasus lain, saya harus mengambil yang terakhir, tetapi sulit untuk mengambil elemen terakhir dari daftar yang tidak terbatas. Yah, daftar itu bisa dibuktikan terbatas, tetapi Haskell tidak tahu lebih baik saat melakukan filter, sehingga terus menyaring tanpa batas.sumber
Common Lisp, 42 karakter
Menerima input yang dipisahkan spasi atau garis
sumber
Pesta,
7264 karakterKeluarkan jumlah baris baru yang tak terbatas, ambil x pertama, masukkan semuanya ke dalam file bernama f, lalu dapatkan ukuran f di blok ukuran y. Mengambil saran manatwork untuk mengurangi delapan karakter.
sumber
read x y
. Dengan beberapa ruang lagi yang dihapus dapat dikurangi menjadi 64 karakter: pastebin.com/Y3SfSXWkPython - 45 karakter
Mengambil input yang dipisahkan koma, misalnya 740,2
sumber
Python, 94 karakter
Pencarian biner rekursif:
sumber
Python, 148
Solusi lain mungkin pendek, tetapi apakah itu skala web ?
Inilah solusi elegan dan waktu konstan yang memanfaatkan kekuatan CLOUD.
Apakah saya menyebutkan itu juga menggunakan Haskell?
sumber
Python, 46 byte
Tidak ada yang memposting solusi pengurangan yang membosankan, jadi saya tidak bisa menahan diri untuk tidak melakukannya.
sumber
Smalltalk , Squeak 4.x rasa
mendefinisikan pesan biner ini di Integer:
Setelah golf, hasil bagi ini masih panjang (88 karakter):
Tapi itu sangat cepat:
-> 127 ms pada mini mac sederhana saya (8 MOp / s)
Dibandingkan dengan divisi reguler:
-> 31 ms, hanya 4 kali lebih lambat
Saya tidak menghitung karakter untuk membaca stdin atau menulis stdout, Squeak tidak dirancang untuk skrip.
Tentu saja, pengurangan yang lebih bodoh diulang
atau enumerasi bodoh biasa
bisa bekerja juga, tetapi tidak terlalu menarik
sumber
sumber
DC: 26 karakter
Saya akui itu bukan solusi tercepat.
sumber
Python 54
Mengambil input yang dibatasi koma.
Kata-kata karena penurunan harga mati dengan daftar diikuti oleh kode ?:
sumber
Q, 46
.
sumber
Referensi: http://www.forums.hscripts.com/viewtopic.php?f=13&t=1358
sumber
Python, 40 karakter
sumber
Python, 37
Buat string dengan panjang
x
('0'*x
) dan gunakan slicing yang diperluas untuk memilih setiapy
karakter, mulai dari indeksy-1
. Mencetak panjang string yang dihasilkan.Seperti Gnibbler, ini membutuhkan input yang dipisahkan koma. Menghapusnya biayanya
9
:sumber
Retina 0.7.3, 33 byte (tidak bersaing)
Bahasa lebih baru daripada tantangan. Mengambil input yang dipisahkan ruang terlebih dahulu dengan pembagi. Membagi dengan nol tidak ditentukan.
Cobalah online
sumber