baik, itu mirip dengan pertanyaan ini tetapi dengan sedikit perbedaan. Anda harus menulis sebuah program untuk menanyakan lebar bilah kemajuan dan berapa banyak pekerjaan yang dilakukan. dan kemudian menggambar progress bar dengan fitur-fitur berikut:
lebar menunjukkan berapa banyak karakter yang harus Anda gunakan untuk menggambar progress bar
progres diberikan melalui nilai floating point antara 0..1.
karakter pertama dan terakhir dalam progress bar harus sesuatu yang berbeda dari semua karakter lain, misalnya "[" dan "]"
program Anda harus menggunakan dua karakter berbeda untuk berapa banyak kemajuan yang telah berlalu sejak awal
Anda harus menulis berapa banyak pekerjaan yang dilakukan tepat di tengah bilah kemajuan, menggunakan tanda angka desimal + "%".
poin bonus untuk menangani input ekstrem, seperti 150% atau -5% pekerjaan selesai.
mencetak jumlah karakter * (1 tanpa bonus atau bonus 0,75 lebar)
beberapa contoh output yang valid
79 0.15
[|||||||||||| 15% ]
25 0.76
[##########76%#####.....]
39 -0.12
[ -12% ]
25 7.6
[##########760%#########]
sumber
Jawaban:
PHP 84 x 0,75 = 63
Sunting: Versi yang kurang 'cantik', tetapi harus valid sesuai aturan:
Keluaran:
Asli (98 x 0,75 = 73,5)
Keluaran:
sumber
J, 78 × 0,75 = 58,5
(Angka negatif dalam J diawali oleh
_
, bukan-
. Untungnya, diad".
dapat menguraikan kedua format.)sumber
_12%
tidak persis di tengah.Perl, 96 × ¾ = 72
Itu menurut aturan golf Perl tradisional (
#!
garis tidak dihitung, kecuali untuk-
dan beralih jika ada).sumber
Ruby - skor 93 (124 karakter)
Namun implementasi ruby lain. Membaca input dari STDIN dalam formulir yang dijelaskan di atas. Anda dapat bertukar karakter
'#'
,' '
dan'['
,']'
langsung dalam kode.sumber
Python -
158155148143138 karakter (skor 103,5)Bisa lebih pendek 30 karakter jika input dipisahkan dengan koma.
sumber
r=p.length()
?Q, 90 karakter, tidak ada bonus
pemakaian
sumber
Scala 149:
ungolfed:
Saya memutuskan, untuk keterbacaan, Anda benar-benar membutuhkan ruang di sekitar angka kemajuan:
sumber
C, 145 karakter, skor = 108,75
sumber
20 1
input itu akan menghasilkan output[#######100%######]
dalam hal ini ada 7 benda tajam yang tersisa dari angka dan 5 benda tajam di kanan, sehingga angka yang dicetak tidak tepat di Tengah.node.js: 135chars, * 0.75 untuk poin bonus, jadi 101.25chars.
ungolfed:
keluaran:
sumber
PHP-128x0.75 => 96
C, 149 * 0,75 = 111,75
Keluaran:
sumber
JavaScript
127125, tidak ada bonusPenggunaan: Ubah
l=9
dengan panjang lain dan / atau ubahp="0.99"
dengan persen lainnyaCatatan: akhiri dengan nol
0.X0
alih-alih0.X
sumber
MATL , skor 35,25 (47 * 0,75)
Cobalah online!
Penjelasan:
sumber
Excel VBA, 108 * .75 = 81 byte
Fungsi yang mengambil input dari
[A1]
dan[B1]
dan output ke konsolKeluaran
dengan input
[A1]=25
dan[B1]=.76
Dengan input
[A1:B1].Resize(1,2)=Split("32 -.5")
Dengan input
[A1:B1].Resize(1,2)=Split("40 10.01")
sumber