Đó là cuối tuần và những người tuyệt vời làm gì vào cuối tuần? Tất nhiên là uống! Nhưng bạn có biết những gì không tuyệt vời? Uống rượu và lái xe. Vì vậy, bạn quyết định viết một chương trình cho bạn biết bạn đã tải như thế nào và khi nào bạn sẽ có thể lái xe trở lại mà không bị cảnh sát kéo qua và mất giấy phép.
Các thách thức
Đưa ra một danh sách đồ uống bạn thưởng thức tối nay, tính toán nồng độ cồn trong máu và thời gian bạn phải đợi cho đến khi bạn có thể nhảy lên xe và về nhà.
Đầu vào
Đầu vào sẽ là một danh sách đồ uống bạn đã có trong đêm này. Điều này sẽ trông như thế này:
4 shot booze 1 ly rượu 2 chai bia 3 ly nước
Container sẽ luôn luôn là số nhiều.
Như bạn có thể thấy mỗi mục bao gồm:
- Các loại thức uống (booze, rượu, bia, nước)
- Hộp đựng đồ uống (ảnh, ly, chai)
- Số lượng x của đồ uống bạn có loại đó là số nguyên với x> 0,
Mỗi loại đồ uống sẽ thêm một lượng cồn nhất định vào máu của bạn:
rượu -> 0,5 ‰ / 100 ml bia -> 0,1 / 100 ml rượu vang -> 0,2 / 100 ml nước -> -0,1 / 100 ml
Nước là ngoại lệ ở đây, vì nó làm máu bạn chảy ra và làm giảm nồng độ cồn của bạn (sẽ rất tuyệt nếu điều đó thực sự có hiệu quả ...).
Mỗi container có một khối lượng nhất định:
mũi tiêm -> 20 ml ly -> 200 ml chai -> 500 ml
Đầu ra
Bạn phải xuất hai số:
- Độ cồn trong
- Thời gian tính bằng giờ bạn phải đợi cho đến khi bạn đạt 0,5 ‰ hoặc ít hơn, để bạn có thể lái xe lại. Bạn mất 0,1 mỗi giờ.
Ghi chú
- Độ cồn không bao giờ có thể giảm xuống dưới không.
- Cùng đi trong thời gian chờ đợi. Nếu bạn có 0,5 hoặc ít hơn, đầu ra bằng không.
- Thứ tự của đồ uống không quan trọng, vì vậy nước uống có thể hạ thấp nồng độ cồn xuống dưới 0 trong quá trình tính toán. Nếu nó vẫn ở đó, bạn cần thay thế nó bằng không.
Mức độ cồn cho ví dụ trên sẽ được tính như thế này:
4 phát súng -> 0,4 1 ly rượu vang -> 0,4 2 chai bia -> 1,0 3 ly nước -> -0,6 => 0,4 + 0,4 + 1 - 0,6 = 1,2
Để đạt 0,5 bạn cần mất 0,7. Bạn mất 0,1 mỗi giờ, vì vậy bạn cần đợi 7 giờ để lái xe lại.
Quy tắc
- Bạn có thể lấy đầu vào ở bất kỳ định dạng nào bạn muốn, nhưng bạn phải sử dụng các chuỗi chính xác như được đưa ra ở trên. Bạn có thể lấy số là số nguyên.
- Bạn có thể xuất hai số theo bất kỳ thứ tự nào, chỉ cần làm rõ số nào bạn sử dụng trong câu trả lời của mình.
- Bạn có thể cho rằng đầu vào sẽ luôn có ít nhất một mục.
- Chức năng hoặc chương trình đầy đủ cho phép.
- Quy tắc mặc định cho đầu vào / đầu ra.
- Tiêu chuẩn áp dụng.
- Đây là môn đánh gôn , do đó, số byte thấp nhất sẽ thắng. Tiebreaker là trình trước đó.
Các trường hợp thử nghiệm
Nhập dưới dạng danh sách các chuỗi. Đầu ra mức độ cồn đầu tiên, các giá trị được phân tách bằng dấu phẩy.
["4 ly rượu bia", "1 ly rượu vang", "2 chai bia", "3 ly nước"] -> 1.2, 7 ["10 lần uống rượu", "1 chai nước"] -> 0,5, 0 ["3 ly rượu vang", "2 chai rượu"] -> 6.2, 57 ["6 ly bia", "3 ly nước"] -> 0, 0 ["Bia 10 ly"] -> 2.0, 15
Chúc mừng mã hóa!
function drive(a) { if (a.every(v=>/water/.test(v))) return [0, 0]; throw new TeetotalException; }