Кілька місяців тому у мене виникло це питання як головоломка для попереднього екранізації для інтерв'ю. Нещодавно, коли замислювався над матеріалами блогів, він з’явився мені в голові як гарний приклад, який можна використовувати для вирішення проблеми функціонально. Я опублікую своє рішення щодо цього питання, як тільки закінчу написання своєї публікації в блозі.
ПРИМІТКА. Це питання було задано в StackOverflow рік тому , і воно було відхилене після кількох (невірних) відповідей. Я припускаю, що це було сприйнято тим, що явне питання інтерв'ю чи домашнє завдання. Наші відповіді повинні бути зашифровані кодом досить глибоко, щоб хтось не думав про їх використання!
У гонці ви робите ставку, використовуючи наступну стратегію. Щоразу, коли ви програєте ставку, ви подвоюєте вартість ставки для наступного раунду. Щоразу, коли ви виграєте, ставка на наступний раунд складе один долар. Ви починаєте раунд, роблячи ставку на один долар.
Наприклад, якщо ви починаєте з 20 доларів, і ви виграєте ставку в першому раунді, програєте ставку в наступних двох раундах, а потім виграєте ставку в четвертому раунді, ви закінчитеся з 20 + 1-1-2 +4 = 22 долари.
Від вас очікується виконання функції g
, яка бере два аргументи:
- Перший аргумент - це ціле число,
a
яке є початковими грошима, які ми маємо, коли починаємо робити ставки. - Другий аргумент - рядок
r
. Перший характер результату буде або "W" (виграш), або "L" (програв), що позначає результат i-го туру.
Ваша функція повинна повернути суму грошей, яку ви матимете після всіх матчів.
Якщо в якийсь момент у вас не вистачає грошей на вашому рахунку, щоб покрити вартість ставки, ви повинні зупинитись і повернути суму, яку ви отримали на той момент.
Вибірка зразка
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
Функція повертається 1
в цьому випадку
Переможець визначається найменшою кількістю символів ВНУТРІШНЯ визначеного значення функції. За бажанням співпрацюйте за мовою. Я знаю, що моє можна покращити!