Vários meses atrás, eu tive essa pergunta como um quebra-cabeça de pré-triagem para uma entrevista. Recentemente, ao pensar no material do blog, ele apareceu na minha cabeça como um bom exemplo para resolver um problema funcionalmente. Vou postar minha solução assim que terminar de escrever minha postagem no blog.
NOTA: Esta pergunta foi feita no StackOverflow há um ano e foi rebaixada após algumas respostas (incorretas). Suponho que foi prejudicada por ser uma pergunta óbvia de entrevista ou lição de casa. Nossas respostas aqui devem ter um código suficientemente profundo para que alguém não pense em usá-las!
Em uma corrida, você aposta usando a seguinte estratégia. Sempre que você perde uma aposta, você dobra o valor da aposta para a próxima rodada. Sempre que você vencer, a aposta para a próxima rodada será de um dólar. Você começa a rodada apostando um dólar.
Por exemplo, se você começar com 20 dólares e vencer a aposta na primeira rodada, perder a aposta nas próximas duas rodadas e depois vencer a aposta na quarta rodada, você terminará com 20 + 1-1-2 +4 = 22 dólares.
Espera-se que você complete a função g
, que requer dois argumentos:
- O primeiro argumento é um número inteiro,
a
que é o dinheiro inicial que somamos quando iniciamos as apostas. - O segundo argumento é uma string
r
. O i-ésimo caráter do resultado será 'W' (vitória) ou 'L' (derrota), indicando o resultado da i-ésima rodada.
Sua função deve retornar a quantidade de dinheiro que você terá depois que todas as rodadas forem jogadas.
Se, em algum momento, você não tiver dinheiro suficiente em sua conta para cobrir o valor da aposta, pare e devolva a soma que tiver nesse momento.
Amostra de execução
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
A função retorna 1
neste caso
O vencedor é determinado pelo menor número de caracteres DENTRO da definição de função implícita. Cooperar por idioma, se desejar. Eu sei que o meu pode ser melhorado!