Kilka miesięcy temu miałem to pytanie jako łamigłówkę przed przesiewową rozmową kwalifikacyjną. Ostatnio, gdy myślę o blogu, pojawił się w mojej głowie jako dobry przykład, który można wykorzystać do funkcjonalnego rozwiązania problemu. Prześlę swoje rozwiązanie tego problemu, gdy tylko skończę pisać mój blog.
UWAGA: To pytanie zostało zadane na StackOverflow rok temu i zostało odrzucone po kilku (niepoprawnych) odpowiedziach. Zakładam, że zostało to uznane za oczywiste pytanie za wywiad lub zadanie domowe. Nasze odpowiedzi powinny być wystarczająco głęboko zakodowane w golfa, aby ktoś nie pomyślał o ich użyciu!
W wyścigu obstawiasz stosując następującą strategię. Ilekroć przegrywasz zakład, podwajasz wartość zakładu w następnej rundzie. Za każdym razem, gdy wygrasz, zakład na następną rundę będzie wynosić jednego dolara. Rundę zaczynasz od obstawienia jednego dolara.
Na przykład, jeśli zaczniesz od 20 dolarów i wygrasz zakład w pierwszej rundzie, przegrasz zakład w następnych dwóch rundach, a następnie wygrasz zakład w czwartej rundzie, skończysz z 20 + 1-1-2 +4 = 22 dolary.
Oczekuje się, że ukończysz funkcję g
, która wymaga dwóch argumentów:
- Pierwszym argumentem jest liczba całkowita,
a
która jest kwotą początkową, jaką mamy, kiedy rozpoczynamy obstawianie. - Drugi argument to ciąg znaków
r
. I-tą postacią wyniku będzie „W” (wygrana) lub „L” (przegrana), oznaczający wynik i-tej rundy.
Twoja funkcja powinna zwrócić ilość pieniędzy, którą będziesz mieć po rozegraniu wszystkich rund.
Jeśli w którymś momencie nie masz wystarczającej ilości pieniędzy na koncie, aby pokryć wartość zakładu, musisz przerwać i zwrócić sumę, którą masz w tym momencie.
Przykładowy przebieg
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
W 1
tym przypadku funkcja powraca
Zwycięzca jest określany przez najmniejszą liczbę znaków WEWNĄTRZ domyślnej definicji funkcji. W razie potrzeby współpracuj według języka. Wiem, że moje można ulepszyć!