Pintu geser memiliki harga yang bervariasi berdasarkan lebar pintu. Perbedaan harga adalah sebagai berikut:
- 60 - 80 cm: ¤150
- 81 - 100 cm: ¤200
- 101 - 120 cm: ¤220
Saat membeli lemari, Anda tentu ingin meminimalkan biaya, jadi tugas Anda adalah menemukan lebar pintu yang meminimalkan biaya total berdasarkan total lebar lemari.
Aturan:
- Lebar total akan diambil sebagai input
- Semua pintu akan memiliki lebar yang sama
- Pilih pintu terkecil jika dua jenis pintu harganya sama
- Lebar dalam sentimeter, bilangan bulat bukan desimal
- Kumpulkan desimal
- Harga akan dikembalikan sebagai bilangan bulat (tidak perlu tanda mata uang)
- Input dan output format adalah opsional, tetapi urutan output harus:
Number of doors, Width, Price
. - Input akan berada dalam kisaran
[120 1000)
.
Ini golf kode. Kode terpendek dalam byte menang.
Contoh:
Input: 156
Output: 2, 78, 300
Input: 331
Output: 3, 111, 660
Input: 420
Output: 4, 105, 880
code-golf
arithmetic
Stewie Griffin
sumber
sumber
201
adalah kasus uji yang menarik ...Jawaban:
05AB1E , 47 byte
Kode:
Bukan pengiriman terbaik, tapi setidaknya sesuatu :)
Cobalah online!
sumber
JavaScript (ES6), 101 byte
-~(~-a/b)
sama dengan Math.ceil (a / b) dalam bilangan bulat 31-bit.sumber
Perl,
190180154133128117 bytetermasuk +1 untuk
-p
Berkomentar:
Simpan 11 byte dengan inlining dan membagi hash ke dua array
Hemat 5 byte dengan menggunakan
-p
(terima kasih kepada @ dev-null)Simpan 18 byte dengan menggunakan POSIX :: ceil dan 3 lainnya dengan menggunakan sintaksis daftar untuk hash (terima kasih kepada @ msh210)
sumber
sub r{$a=$_[0];~~$a==$a?$a:1+~~$a}
itusub r{use POSIX;ceil pop}
.(80=>150,100=>200,120=>220)
itu(80,150,100,200,120,220)
.[120-1000)
, tetapi seseorang dapat selalu berubah1E4
menjadi1E9
...PowerShell,
137135 byteOutput dipisahkan oleh baris baru.
Kami mengambil input
$a
, mengatur biaya kami$j
ke9000000000
(sejumlah besar itu jauh lebih banyak daripada yang kita butuhkan). Selanjutnya, kita mengulang dari60..120
dengan|%{...}
. Setiap iterasi, kami menghitung$p
harga item saat ini dengan pernyataan pseudo-ternary , lalu menghitung$c
pagu$a/$_
. Jika total saat ini lebih kecil dari total terkecil yang kita lihat ($j
), simpan semua variabel ini:$j
(total),$k
(jumlah pintu yang diperlukan), dan$i
(lebar pintu), dan lanjutkan loop. Setelah loop selesai, output saja nilai-nilai terbaik.Sunting - Menyimpan dua byte dengan memindahkan
$c
dan$p
penugasan keif
kondisisumber
Pyth, 65 byte
Coba di sini!
Penjelasan
Pertama, ini menghasilkan daftar semua kemungkinan kombinasi jumlah pintu / lebar pintu dan menghitung harga untuk setiap kombinasi tersebut. Maka kita hanya perlu memesannya dengan harga dan lebar pintu dan mengambil elemen pertama dari daftar yang dihasilkan.
Penjelasan kode berikut setelah saya menurunkan ini.Tolong bantu saya bermain golf, ini terlalu lama.sumber
JavaScript (ES6) 96
Seperti dicatat oleh @Neil,
=-~(~-n/d)
setara dengan divisi dengan pembulatan untuk bilangan bulat 32 bit atau kurang.sumber
R ,
135104 byteCobalah online!
Disimpan 31 byte oleh
utf8ToInt
cbind
langsung daripada setelah mendefinisikan variabelBagaimana itu bekerja:
approx
mengembalikan harga satu pintu berdasarkan panjangnya. Ia kembali diNA
luar kisaran[60,120]
.(number of doors, door width, total price)
dikembalikan.order
Fungsi digunakan untuk menemukan harga minimum; triplet yang benar diekstraksi berdasarkan itu. Dalam hal pengikatan,order
akan mengembalikan entri yang datang terlebih dahulu, dan karena kita dilingkari dari 16 ke 1, jumlah pintu terbesar (lebar pintu terkecil) akan dikembalikan.sumber
stepfun
lebih lama - karena seseorang harus menghapus lebar di luar[60,120]
.