Vài tháng trước tôi có câu hỏi này như một câu đố sàng lọc trước cho một cuộc phỏng vấn. Gần đây khi nghĩ về tài liệu blog, nó xuất hiện trong đầu tôi như một ví dụ tốt để sử dụng để giải quyết vấn đề một cách chức năng. Tôi sẽ đăng giải pháp của mình cho vấn đề này ngay khi tôi viết xong bài đăng trên blog của mình.
LƯU Ý: Câu hỏi này đã được hỏi trên StackOverflow một năm trước và đã bị bỏ qua sau một vài câu trả lời (không chính xác). Tôi cho rằng nó đã bị đánh giá thấp vì là một câu hỏi phỏng vấn hoặc bài tập về nhà rõ ràng. Câu trả lời của chúng tôi ở đây phải là mã golf đủ sâu để ai đó không nghĩ về việc sử dụng chúng!
Trong một cuộc đua, bạn đặt cược bằng chiến lược sau. Bất cứ khi nào bạn thua cược, bạn sẽ nhân đôi giá trị của cược cho vòng tiếp theo. Bất cứ khi nào bạn giành chiến thắng, đặt cược cho vòng tiếp theo sẽ là một đô la. Bạn bắt đầu vòng bằng cách đặt cược một đô la.
Ví dụ: nếu bạn bắt đầu với 20 đô la và bạn thắng cược ở vòng đầu tiên, thua cược trong hai vòng tiếp theo và sau đó thắng cược ở vòng thứ tư, bạn sẽ kết thúc với tỷ số 20 + 1-1-2 +4 = 22 đô la.
Bạn sẽ hoàn thành hàm g
, trong đó có hai đối số:
- Đối số đầu tiên là một số nguyên
a
là số tiền ban đầu chúng ta có khi chúng ta bắt đầu cá cược. - Đối số thứ hai là một chuỗi
r
. Ký tự thứ i của kết quả sẽ là 'W' (thắng) hoặc 'L' (thua), biểu thị kết quả của vòng thứ i.
Chức năng của bạn sẽ trả lại số tiền bạn sẽ có sau khi tất cả các vòng được chơi.
Nếu tại một thời điểm nào đó bạn không có đủ tiền trong tài khoản của mình để trang trải giá trị của cược, bạn phải dừng và trả lại số tiền bạn có tại thời điểm đó.
Chạy mẫu
1st round - Loss: 15-1 = 14
2nd round - Loss: 14-2 = 12 (Bet doubles)
3rd round - Loss: 12-4 = 8
4th round - Win: 8 + 8 = 16
5th round - Loss:16-1 = 15 (Since the previous bet was a win, this bet has a value of 1 dollar)
6th round - Loss: 15-2 = 13
7th round - Loss: 13-4 = 9
8th round - Loss: 9-8 = 1
Hàm trả về 1
trong trường hợp này
Người chiến thắng được xác định bởi số lượng ký tự ít nhất bên trong định nghĩa hàm ngụ ý. Hợp tác theo ngôn ngữ nếu muốn. Tôi biết của tôi có thể được cải thiện!