Diberikan desimal dalam bentuk <float>, <precision>
, Anda menggambar representasi grafis dari bagian desimal (yaitu fraksi) dari float. Contoh:
Input:,
6.75, 4
output:6||| 7 ----
6.75
(angka pertama dari input) adalah angka untuk dijelaskan,4
(angka kedua dari input) adalah jumlah tanda hubung di bawah pipa.6
adalah lantai 6.75,7
adalah langit-langit6.75
. Jumlah pipa adalahdecimal part of first input number * second input number
.Input:,
10.5, 6
output:10||| 11 ------
Input:,
20.16, 12
output20|| 21 ------------
.16
sebenarnya membutuhkan 1,92 pipa, tetapi karena saya tidak bisa menggambar 1,92 pipa, saya hitung menjadi 2.Input:,
1.1, 12
output:1| 2 ------------
.1
adalah 1,2 pipa dalam hal ini, jadi lantai ke 1 pipa.Juga, kasing tepi. Input:
5, 4
(yaitu angka bilangan bulat), output:5 6 ----
- Angka untuk dijelaskan adalah float positif, hanya dibatasi oleh kemampuan bahasa Anda.
- Angka presisi adalah bilangan bulat genap, lebih besar dari 2 (yaitu presisi minimum yang diperlukan adalah 4). Ini bisa besar sembarang.
- > = n.5 pipa dibulatkan, ke n + 1 (yaitu 1,5 dibulatkan menjadi 2 dan 2,5 dibulatkan menjadi 3). <n.5 pipa dibulatkan menjadi n (yaitu 1,4 dibulatkan menjadi 1 dan 2,4 dibulatkan menjadi 2).
- Jika akan lebih nyaman untuk bahasa Anda, Anda dapat mengambil input sebagai array, mis
[6.75, 4]
. Jika Anda mengambil input dalam urutan terbalik, yaitu[4, 6.75]
, silakan tentukan dalam jawaban Anda.
5.0 4
: apakah itu menarik dari5
ke6
atau dari4
ke5
, atau baik diterima? Input1.25 2
: apakah memiliki 0 atau 1|
, dan mengapa (yaitu apa aturan pembulatan)? Apakah angka pertama dalam input harus positif? Berapa presisi dan besarnya maksimum? Apakah angka kedua dalam input harus positif? Jika negatif, apakah kita mundur?Jawaban:
CJam, 32 byte
Mengambil ketelitian pertama dan desimal kedua, dipisahkan oleh spasi.
Jalankan semua test case.
Penjelasan
sumber
Mathematica, 119 byte
Saya mencoba ... Menguji:
sumber
Japt,
4746 byteHanya sekelompok menambahkan dan mengulangi.
Cobalah online
sumber
(U-Uf)
sama denganU%1
, menghemat dua byte.Java,
253206181 byteDisimpan 47 byte berkat @ Kenney dengan menguraikan kondisi dan variabel yang digunakan sekali, dan memilah variabel yang berlebihan.
Disimpan 25 byte lagi berkat @ Kenney dengan inlining 2 loop dengan operator ternary.
Manipulasi String Murni:
Versi loop inlined (181 byte):
4 versi loop (206 byte):
Versi tidak disatukan:
Contoh kerja di sini di ideone.com . Program lengkap menerima input STDIN sebagai
<float>,<precision>
.CATATAN:
Math.round(float)
Putaran Java menggunakanRoundingMode.HALF_UP
sebagai default, yang merupakan perilaku OP yang diperlukan.Output dari kasus uji yang diberikan berbeda dengan apa yang diberikan OP.
sumber
a
(tidak pernah digunakan), pengaturan Anda di 233. Anda bisa menghemat 23 lain untuk mendapatkan 210 byte: menggantiq.length()
denganb
menghemat 13:int g=(int)f, b=(""+g).length(), c=b, i=0;
. Incrementing iterator di kondisifor
menghemat 6, dan inliningd
(digunakan sekali) menghemat 4:int c = b; for(;i++<b;)h+=" "; for(;i++<=b+p;)h+="-"; for(i=c;i<c+Math.round((f-g)*p);i++)q+="|"; for(;i++<p+b;)q+=" ";
.\n
b
menjadi aswell usang ;-) Anda masih dapat menyimpan 1 byte di 2 untuk:for(;i++<=c+p;)
. Anda dapat menyimpan file dengan ujung unix line di windows, tetapi sayangnya Java tidak mengizinkan string multiline ..for(;i<c+p;)h+=i++<c?" ":"-";for(i=c;i<p+c;)q+=i++<c+Math.round((f-g)*p)?"|":" ";
Javascript ES6,
105104 byteDisimpan 1 byte berkat, um, bagaimana Anda mengetik ՊՓԼՃՐՊՃՈԲՍԼ?
sumber
(f,p)=>(i=f|0)+("|"[r="repeat"](j=(f-i)*p+.5|0)+" "[r](p-j))+(i+1)+("\n"+i).replace(/\d/g," ")+"-"[r](p)
\n
dengan baris baru yang sebenarnya. Dan pastikan untuk membungkusnya dengan string template.Haskell, 113 byte
Contoh penggunaan:
properFraction
membelah desimal menjadi bagian bilangan bulat dan pecahannya. Outputnya adalah daftar bagian-bagian (angka awal, bar, spasi, ...) yang disatukan menjadi string tunggal (via>>=id
).sumber
main
pembungkus untuk program penuh).MATL , 49 byte
Menggunakan rilis 6.0.0 dari bahasa / kompiler. Berjalan di Matlab atau Oktaf.
Mengambil angka dalam urutan yang sama seperti pada tantangan.
Contohnya
Penjelasan
sumber
Perl, 90 byte
Mengharapkan input sebagai argumen commandline. Simpan dalam file (katakanlah
90.pl
) dan jalankan sebagaiperl 90.pl 6.75 4
Dengan komentar
sumber
Stackgoat ,
3127 byteMirip dengan sebagian besar jawaban lainnya. Saya akan melihat apakah saya bisa bermain golf lebih banyak. Input dapat dipisahkan dengan koma, dipisahkan oleh ruang, atau hampir apa saja yang dipisahkan.
Non bersaing karena Stackgoat dibuat setelah tantangan ini
Penjelasan
sumber
Lua, 157 byte
Panjang, tetapi tidak dapat menemukan solusi yang lebih pendek
Tidak disatukan
Anda dapat menguji lua online , test case berikut dapat bermanfaat :)
sumber
C,
233231 byteTidak Disatukan:
sumber
Python 3,
116108 bytetautan trinket.io
Terima kasih kepada Seeq karena menyimpan beberapa karakter.
Versi pertama:
Versi tidak disatukan:
sumber
;
. Anda hanya menggunakanh
sekali, jadi Anda harus inline juga. Seharusnya menyimpan beberapa karakter.h
lebih sulit. Untuk penggabungan danlen
fungsi dalam dua baris terakhir untuk bekerja,l
harus berupa string, jadih
perlu digantistr(int(l)+1)
. Pengaturanh
sebelum konversil
menyimpan beberapa karakter.