Tulis program atau fungsi yang menghasilkan bilangan bulat positif a
, b
dan c
, dan cetak atau kembali a/b
ke c
tempat desimal, menggunakan operasi + - * /% [tambah, kurangi, gandakan, bagi, modulasikan] pada bilangan bulat positif: Anda dapat menggunakan semua itu bahasa Anda memungkinkan, tetapi tidak pada angka floating point. Rentang a, b, c adalah rentang yang diizinkan untuk bilangan bulat tak bertanda dalam bahasa Anda. Hasil angka akan dipotong ke digit terakhir untuk dicetak (jadi tidak round
).
Ini berarti bahwa jika bahasa Anda tidak memiliki tipe integer (hanya float), Anda dapat berpartisipasi dengan menggunakan angka float ini sebagai bilangan bulat positif saja. Petunjuk dari latihan ini adalah menulis fungsi yang menemukan digit dalam divisi float point, hanya menggunakan operasi + - * /% pada bilangan bulat [unsigned].
Contohnya
print(1,2,1)
akan dicetak0.5
print(1,2,2)
akan dicetak0.50
print(13,7,27)
akan dicetak1.857142857142857142857142857
print(2,3,1)
akan dicetak0.6
print(4,5,7)
akan dicetak0.8000000
print(4,5,1)
akan dicetak0.8
print(9999,23,1)
akan dicetak434.7
print(12345613,2321,89)
akan mencetak jika Bahasa Anda memiliki 32 bit unsigned5319.09220163722533390779836277466609220163722533390779836277466609220163722533390779836277466
Kode terpendek dalam byte menang. Maaf jika ini tampak tidak jelas ... Saya juga tidak tahu bahasa, tidak ingat kata-kata dengan baik ... Lebih baik memiliki satu tautan ke Ideone.com atau tempat lain untuk dengan mudah mencoba jawabannya terutama untuk untuk uji beberapa input berbeda dari yang diusulkan.
(1,2,0)
. Lihat meta.codegolf.stackexchange.com/a/5608/194(1,2,0)
?(1,2,0)
harus tidak relevan karena0
bukan bilangan bulat positif. Dan saya lebih suka jika c tetap seperti itu karena saya lebih suka tidak harus berpikir tentang menambahkan.
atau tidakJawaban:
05AB1E ,
17 13 11 1914 byteMasukan dalam formulir
b, a, c
.Disimpan 5 byte berkat Grimy .
Cobalah online!
sumber
b,a,c
?‰`I°*¹÷I°+¦'.sJ
‰`¹+I°*¹÷¦'.sJ
Haskell, 87 byte
Contoh penggunaan:
(13#7)27
->"1.857142857142857142857142857"
.23 byte untuk menangani
c==0
kasus ini dan menggunakan nol di depan bukan hal-hal seperti.5
.Cara kerjanya: kalikan
a
dengan10^c
, bagi denganb
, berubah menjadi string, pisahkan di mana.
harus dimasukkan, bergabung dengan kedua bagian dengan.
di antara dan memperbaiki kasus tepi.sumber
Perl 6 ,
58 57 5548 byteYang cukup menyebalkan adalah bisa disingkat menjadi adil
{($^a.FatRat/$^b).base(10,$^c)}
jika diizinkan untuk dibulatkan ke nilai terdekat.Penjelasan:
sumber
(...).FatRat / 10**$x
itu pembagian Rasional? Anda hanya diizinkan untuk membagi bilangan bulat.does Real
ataudoes Numeric
itu akan diizinkan? Bagaimana jika saya menambah (tambalan monyet) kelas yang ada untuk menghapus peran itu, apakah itu diizinkan?+-*/%
hanya dengan tipe integer biasa. "plain integer" dalam hal fungsionalitas (pertama-tama: pembagian integer) bukan representasi internal. Apakah menurut Anda diizinkan menggunakan pustaka floating point perangkat lunak, yang (meskipun namanya) juga hanya menggunakan bilangan bulat untuk representasi internal?Perl, 55 byte
Termasuk +3 untuk
-p
Berikan a dan b pada satu baris pada STDIN, c pada baris berikutnya
division.pl
:yang
$_/$&
adalah diperdebatkan sedikit. Saya sebenarnya ingin divisi integer di sana tetapi perl tidak memilikinya tanpa memuat modul khusus. Jadi untuk sementara non-integer yang kemudian saya segera potong (menggunakan|0
) jadi saya berakhir dengan integer yang akan diberikan oleh divisi integer. Itu dapat ditulis ulang sebagai($_-$_%$&)/$&
untuk sementara bahkan tidak memiliki nilai non-integer (itu secara internal akan tetap menjadi pelampung sekalipun)sumber
$-
untuk membuatnya hanya int? (Saya pikir ada batasan ketat pada campuran / maksnya, dan saya yakin Anda sudah mempertimbangkannya, tetapi meskipun perlu diperiksa!)use integer
$-
, bagus untuk diketahui. Terima kasih!JavaScript (ES6),
5550 byte(a/b|0)
melakukan divisi float tetapi segera melakukan cast ke integer. Tolong beri tahu saya jika ini tidak diizinkan.sumber
PHP, 187 Bytes
bekerja dengan string untuk pembilang yang bisa menjadi nilai int lebih besar dari itu
PHP_INT_MAX
Saya tidak punya kesempatan lain maka 13/7 disingkat menjadi 1.8571428571429 dan saya mencapai jadi bukan ujian dengan 27 tempat desimal
Dengan cara ini 36 Bytes tidak diperbolehkan
sumber
Pyth -
2119181614 byteAkan melihat lebih dari format input, yang dapat menyimpan banyak.
Test Suite . (PS 27 tidak selesai online, jadi saya melakukan 10 sebagai gantinya).
sumber
0
itu bukan bilangan bulat positif (meskipun op terus menambahkan contoh denganc=0
)JavaScript (ES6),
646259 byteDisimpan 2 byte berkat produk ETH.
Divisi yang disertakan selalu menghasilkan bilangan bulat.
sumber
m
sama sekali masih bekerja?f=(a,b,n,s)=>n+1?f((q=(a-a%b)/b,a%b*10),b,n-1,s?s+q:q+'.'):s
adalah 60 byte.Java 7, 105 byte
Tidak digabungkan & kode uji:
Coba di sini.
Keluaran:
sumber
divide
dan tidak/
.int
tipe untuk menyimpan nilai numerik. (Bukankah itu keren? BigInteger adalahint[]
angka. Seperti, {1,2,5} dalam basis 10 adalah 125. Saya Saya tidak yakin apa basis angka BigInteger sebenarnya, tapi saya kira itu lebih dari 10. "Ruby, 67 byte
jika saya membuatnya berfungsi untuk menjalankan kasus uji di atas
sumber
->a,b,c{...}
mana Anda mengganti elips dengan kode Anda. (Penetapan sebenarnya dari variabel tidak diperlukan oleh konsensus.)Racket 203 byte
Tidak Disatukan:
Pemakaian:
Keluaran:
Metode lain (bukan jawaban yang valid di sini):
sumber
real->decimal-string
mengharapkanreal
nilai sebagai argumen pertama, demikian/
juga pembagian floating point, yang tidak diperbolehkan dalam tugas ini. Juga:real->decimal-string
putaran ((f 1 6 7)
->0.1666667
) alih-alih memotong.q, 196 byte
Untuk menjalankan: atur a, b, c terlebih dahulu.
sumber
Rust, 114 byte
kode tes:
sumber
PHP, 89 byte
intdiv () diperkenalkan di php 7 sehingga diperlukan. php 7.1 akan memungkinkan saya untuk mengubah daftar () menjadi [] dan juga akan menghemat 4 byte.
gunakan seperti:
sumber
$o.=intdiv($a=10*($a%$b),$b);
dengan$o.=($a=10*($a%$b))/$b^0;
akan menghemat 4 Bytes.C #, 126 byte
Program lengkap dengan uji kasus:
Divisi integer diimplementasikan. Jumlah ukuran apa pun dapat digunakan, karena
BigInteger
tipe data (imporSystem.Numerics
diperlukan). Parameter hitungan digitc
dibatasi hingga 2 ^ 31-1, namun harus menyediakan lebih dari cukup digit.sumber
Groovy (
787742 Bytes)Penjelasan
Eval.me(a+'.0g');
- Konversi dari input integer ke input BigDecimal. Dalam notasi BigDecimal asyik adalah notasi ganda dengan G atau g terlampir. Saya juga bisa menggunakan konstruktornew BigDecimal(it)
tetapi ini menghemat satu byte..divide(b, n, 1)
- Bagi dengan b dengan n presisi, mode pembulatan setengah-atas.Cobalah di sini: https://groovyconsole.appspot.com/script/5177545091710976
sumber
Batch, 122 byte
sumber
Mathematica, 50 byte
Fungsi yang tidak disebutkan namanya dari tiga argumen (yang diperintahkan
c
,a
,b
untuk menyimpan byte di suatu tempat), yang mengembalikan string. Ini dikalikana/b
dengan10^c
, mengambil fungsi bilangan bulat terbesar, lalu mengkonversi ke string dan memasukkan titik desimal di tempat yang tepat. Sayang sekali nama fungsinya tidak lebih pendek.sumber
Python 3, 62 Bytes
Coba Di Sini
* Catatan : repl.it menggunakan ver yang lebih lama dari Python 3 , yang mengharuskan semua indeks bidang harus ditentukan, artinya
"{:.{1}f}"
akan menjadi"{0:.{1}f}"
, membuatnya 63 byte di repl.itCara Penggunaan
Masukkan ketiga nilai dengan spasi di antaranya. yaitu input
1 2 1
akan memberikan hasil0.5
Penjelasan
input().split()
: Mendapat input pengguna dan membaginya menjadi daftar dengan pemisah (spasi)a,b,c = map(int,XX)
: Memetakan variabel ke dalam nilai yang ditentukan oleh pengguna dengan tipe int"{:.{1}f}".format(a/b,c)
: Memformat string untuk menampilkan hasil pembagian dan menggantikannya{1}
denganc
mengatur tempat desimal dari string yang ditampilkanprint(XX)
: mencetak string yang disediakansumber
Python 3 , 58 byte
Cobalah online!
Ini tepat untuk jumlah desimal yang ditentukan selama
a * 10 ** c
tidak terlalu besar.Saya mencoba Python 2 untuk mempersingkat
str(...)
ke`...`
tetapi Python 2 menyisipkanL
pada akhirnya jika terlalu besar jadi memeriksa untuk itu akan mengambil byte jauh lebih banyak daripada nilainya.sumber
Stax , 13 byte
Jalankan dan debug itu
Argumen diterima secara
c a b
berurutan.sumber
C, 67 byte
Cobalah online!
Beberapa versi sebelumnya, saya pikir memiliki bug dalam memori baca dari ditugaskan ke program ... Terima kasih kepada ceilingcat dan untuk semua ...
sumber