Несколько месяцев назад у меня был этот вопрос в качестве загадки перед собеседованием. Недавно, когда я размышлял о материалах блога, он показался мне хорошим примером для функционального решения проблемы. Я опубликую свое решение, как только я закончу писать в своем блоге.
ПРИМЕЧАНИЕ. Этот вопрос был задан в StackOverflow год назад и был отклонен после нескольких (неправильных) ответов. Я предполагаю, что это было понижено для того, чтобы быть очевидным интервью или домашним заданием. Наши ответы должны быть написаны достаточно глубоко, чтобы кто-то не задумывался об их использовании!
В гонке вы делаете ставки, используя следующую стратегию. Каждый раз, когда вы проигрываете ставку, вы удваиваете значение ставки для следующего раунда. Всякий раз, когда вы выигрываете, ставка на следующий раунд будет один доллар. Вы начинаете раунд, ставя один доллар.
Например, если вы начнете с 20 долларов и выиграете ставку в первом раунде, потеряете ставку в следующих двух раундах, а затем выиграете ставку в четвертом раунде, вы получите 20 + 1-1-2 +4 = 22 доллара.
Ожидается, что вы завершите функцию g
, которая принимает два аргумента:
- Первый аргумент - это целое число,
a
которое представляет собой начальные деньги, которые мы получаем, когда начинаем делать ставки. - Второй аргумент - это строка
r
. I-ый символ результата будет либо «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
в этом случае
Победитель определяется по наименьшему количеству символов ВНУТРИ определения подразумеваемой функции. Сотрудничайте по языку, если хотите. Я знаю, что мой может быть улучшен!