Latar Belakang
Ini Jumat sore dan Anda dan teman Anda memutuskan untuk pergi ke pub malam itu, tetapi sebelum pergi ke pub Anda pikir Anda harus memiliki beberapa minuman. Namun, hal-hal meningkat dengan cepat; temanmu Shaddock Pamplemousse memenangkan lotre awal minggu ini dan memutuskan untuk membawa peti ke atas peti dengan minuman yang berbeda. Keamanan di pub sangat ketat, dan jika Anda menggunakan terlalu banyak sebelum mencoba memasuki tempat Anda tidak diizinkan masuk. Anda semua adalah programmer - jadi Anda pikir semuanya akan baik-baik saja.
Tantangan
Anda perlu memprogram pengukur alkohol yang menghasilkan kebenaran / kepalsuan jika Anda berada di atas / di bawah batas pub yang masuk akal. Sebelum Anda pergi ke pub, Anda memasukkan jumlah dan jenis minuman yang telah Anda konsumsi pada malam hari stdin
ketika program pengukuran Anda membaca. Jika hasilnya benar, Anda berada di atas batas pub dan tinggal di rumah. Jika hasilnya salah, Anda bisa melakukannya.
Memasukkan
Satu bilangan bulat lebih besar dari 0
yang mewakili berat badan Anda dalam kilogram diikuti oleh garis baru. Input ini diikuti oleh serangkaian jumlah dan minuman satu digit pada formulir berikut:
<amount><amount type>o<beverage type>
Untuk satu botol bir ini akan terlihat seperti:
1Bob
Setiap input dipisahkan oleh spasi.
Spesifikasi input
Setiap minuman memiliki unit yang sesuai dengan dampak yang ditimbulkan olehnya. Jika Anda mengonsumsi lebih banyak unit daripada berat Anda dibagi dua, pub bukan merupakan pilihan lagi.
(Ini mungkin atau mungkin tidak mencerminkan kenyataan)
Berikut ini adalah minuman yang valid dan unit alkohol yang sesuai dari minuman tersebut:
Beer:
b
,1
UnitMinuman energi:
e
,0
unitSaus panas:
h
,2
unit (barang-barang yang kuat)Juice (terbuat dari buah-buahan organik dll):
j
,0
unitRum:
r
,6
unitTequila:
t
,7
unitVodka:
v
,6
unitWine:
w
,3
unit
Ada beberapa jenis jumlah:
Botol:
B
Peti:
C
Kaca:
G
Tong:
K
Menyesap:
S
Setiap jenis jumlah memiliki pengganda yang mengalikan unit alkohol dari minuman yang terkandung di dalamnya:
Botol:
3
Peti:
25
Kaca:
2
Tong:
50
Menyesap:
0.2
Keluaran
Program Anda akan menampilkan kebenaran / kepalsuan ke stdout
jika jumlah yang dikonsumsi di atas / di bawah berat badan Anda dibagi dengan 2. Jika jumlah yang dikonsumsi sama dengan berat Anda dibagi dengan 2, Anda harus menghasilkan kepalsuan.
Sampel kemungkinan input dan output
Memasukkan
70
1Bob 3Soj
Keluaran
False
Memasukkan
2
1Cov
Keluaran
1
Memasukkan
50
1Cob
Keluaran
0
Memasukkan
100
4Gow 1Koe 1Bov 1Gow 2Sot
Keluaran
True
Program terpendek dalam byte menang!
sumber
o
adalah format karakter, meskipun Anda belum mengatakannya secara khusus. Anda harus mengklarifikasi ini (sebagaimanao
juga mengacu pada minyak zaitun). 2. Apa yang kita hasilkan jika kita benar-benar dalam batas? atau tidak masalah?43Gow
,?Jawaban:
CJam, 53 byte
Cobalah online di juru bahasa CJam .
Bagaimana itu bekerja
sumber
Python 3, 131
Sekarang kita bermain golf dengan ular!
Disimpan 18 byte berkat shebang.
Disimpan 4 byte lebih banyak berkat DSM.
Menyimpan banyak byte berkat tzaman.
Banyak terima kasih kepada tzaman atas tipu muslihatnya yang menyalahgunakan untuk
.find()
kembali-1
jika tidak menemukan nilai.Saat ini mengasumsikan format minuman ini persis seperti yang dinyatakan dalam tantangan, misalnya, hanya 1 digit nilai setiap minuman.
sumber
m
dan gantim[p[-1]]
bit dengan[3,25,2,50,.2]['BCGKS'.find(p[-1])]
, dan sama dengand
. Saya turun ke 168 dengan perubahan-perubahan pada kode Anda.Minkolang 0,11 , 59 byte
Coba di sini.
Penjelasan
sumber
CJam, 54 byte
Agak fiddly dan mungkin suboptimal, tapi saya pikir ini berfungsi dengan baik. Cobalah online .
Penjelasan
Perhatikan bahwa array numerik memiliki 2 di akhir, yang berarti bahwa
Gho
, yang hilang dari string pertama, bisa dipetakan ke 2.sumber
CJam, 77
sumber
VBA, 251 byte
Format yang Dapat Dibaca
Cukup yakin ini bisa bermain golf. Manipulasi String saya dengan
Mid(Right())
tampaknya terlalu bertele-tele, Tetapi menjalankan array meskipunStrReverse
membuatnya lebih lama. Jika kami menganggap Anda hanya minum 0-9 dari minuman tertentu pada suatu waktu, kami dapat menyimpan beberapa byteAmbil input sebagai satu string dengan berat dipisahkan oleh spasi karena
VBA
dosis tidak mendukung input multi barissumber
Ruby, 153 byte
Saya perlu menyingkirkan gsubs entah bagaimana
sumber
JavaScript, 131
134139byteIni adalah program lengkap dan pada dasarnya merupakan adaptasi dari jawaban PHP saya :
Bunyinya dua nilai menggunakan
prompt
danalert
s hasilnya sebagai[true|false]
.Suntingan
||0
alih-alih menyatakan minuman dengan0
unit. Terima kasih kepada user81655 .prompt
dalam variabel dan memperpendek inisialisasi. Terima kasih untuk Stefnotch .sumber
,e:0,j:0}[b[++i]]
ke}[b[++i]]|0
.0
nilai itu. Yah, saya tidak memikirkan itu. Harus menggunakan||
bukan operator bitwise. Masih 5 byte lebih sedikit. Terima kasih.for(s=i=0,a=prompt(),b=prompt();
dapat diubah menjadi:for(c=prompt,b=c(a=c(s=i=0));
bash (+ bc + GNU sed),
200196194 bytesumber
Javascript, 159 byte
Karena Javascript membutuhkan pustaka untuk mengakses STDIN, kode ini hanyalah fungsi yang menerima keseluruhan input, yaitu
b("100\n4Gow 1Koe 1Bov 1Gow 2Sot")
sumber
prompt()
diterima secara umum sebagai alternatif yang validSTDIN
dalam JavaScript .b=t=>(a={B:3,C:25,G:2,K:50,S:.2,b:1,h:2,w:3,r:6,v:6,t:7},t.split(/\W/).reduceRight((t,n,r)=>r?n[0]*a[n[1]]*a[n[3]]+t||t:t>n/2,0))
.Python 3, 157 byte
sumber
PHP, 163
169byteKeluaran
1
atau tidak sama sekali, bekerja untuk semua kasus uji.Saya masih bertanya-tanya apa saus panas ini, memiliki 2 unit .
Suntingan
0
dari0.2
.sumber
Keg , 165 byte (SBCS)
Cobalah online!
Saya merasa seolah-olah jawaban Tong tidak pernah lebih tepat! Ini mungkin bisa golf, tetapi saya pikir itu tidak bisa.
Dijelaskan
sumber