Giới thiệu và tín dụng
Giả sử bạn là một nhân viên pha chế. Bạn có nhiều người hạnh phúc trong quán bar của bạn nhiều lần, nhưng nhiều người chỉ uống cùng một loại đồ uống và quá ít cho khẩu vị của bạn và bạn muốn thay đổi điều đó. Vì vậy, bạn giới thiệu một hệ thống trong đó giá của một loại đồ uống là khác nhau, tùy thuộc vào số lượng đã được bán, nhưng không bao giờ đắt hơn hoặc thấp hơn ngưỡng nhất định. Vì một số lý do kỳ lạ, bạn luôn quên theo dõi đúng tất cả đồ uống và giá bán và do đó bạn cần nghĩ ra một đoạn mã ngắn (= đáng nhớ!) Để tính toán cho bạn lượng thức uống được tiêu thụ.
Thử thách này đã xuất hiện trong kỳ thi giữa kỳ năm 2012 tại khóa học lập trình chức năng tại trường đại học của tôi và tôi đã được giáo sư của mình chấp nhận để đăng bài ở đây. Chúng tôi đã được cung cấp một giải pháp ví dụ trong ngôn ngữ của kỳ thi.
Đầu vào
Đầu vào của bạn sẽ là một danh sách các chuỗi không chứa khoảng trắng - đây là tên của đồ uống được bán. Lấy đầu vào bằng phương thức nhập được ưu tiên, thường được chấp nhận của bạn .
Đầu ra
Đầu ra của bạn sẽ là một con số duy nhất - đây là thu nhập bạn đã tạo ra tối nay. Đưa ra đầu ra bằng phương pháp đầu ra ưa thích, thường được chấp nhận.
Phải làm sao
Điều này áp dụng cho từng loại đồ uống riêng biệt:
- Giá khởi điểm là 10.
- Mỗi lần đồ uống được mua, giá của nó sẽ tăng thêm 1 cho người mua tiếp theo.
- Giá tối đa là 50. Nếu đồ uống đã được mua với giá 50 thì giá mới sẽ là 10 lần nữa.
Nhiệm vụ của bạn là tìm thu nhập tổng thể, được tạo ra bởi danh sách đồ uống đầu vào theo các quy tắc trên.
Trong trường hợp bạn đang tự hỏi: "50 đô la thực sự rất tốn kém cho đồ uống!", Đây là Bucks 50 deci, vì vậy Đơn vị 50 * 0,1 *, nhưng tôi đã chọn đi 10-50 để không loại trừ ngôn ngữ mà không có ngôn ngữ số học dấu phẩy động.
Ai thắng?
Đây là mã golf , vì vậy mã ngắn nhất tính bằng byte sẽ thắng! Quy tắc tiêu chuẩn áp dụng.
Trường hợp góc tiềm năng
Nếu danh sách đầu vào trống, đầu ra sẽ là 0.
Danh sách đầu vào icannot được giả sử được sắp xếp theo đồ uống.
Ví dụ
[] -> 0
["A"] -> 10
["A","B"] -> 20
["A","A","B"] -> 31
["A","B","A"] -> 31
["A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A"] -> 1240
["A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","B","B","B","C","C","D"] -> 1304
["D","A","A","C","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","B","B","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","B","C"] -> 1304
["A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","B","B","B","C","C","D","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A"] -> 1304