Hace varios meses tuve esta pregunta como un rompecabezas de preselección para una entrevista. Recientemente, cuando pensaba en el material del blog, apareció en mi cabeza como un buen ejemplo para resolver un problema funcionalmente. Publicaré mi solución a esto tan pronto como termine de escribir mi publicación de blog.
NOTA: Esta pregunta se hizo en StackOverflow hace un año y fue rechazada después de algunas respuestas (incorrectas). Supongo que fue rechazado por ser una entrevista obvia o una pregunta de tarea. ¡Nuestras respuestas aquí deben tener un código lo suficientemente profundo como para que alguien no piense en usarlas!
En una carrera, apuestas usando la siguiente estrategia. Cada vez que pierdes una apuesta, duplicas el valor de la apuesta para la próxima ronda. Siempre que gane, la apuesta para la próxima ronda será de un dólar. Comienzas la ronda apostando un dólar.
Por ejemplo, si comienza con 20 dólares y gana la apuesta en la primera ronda, pierde la apuesta en las siguientes dos rondas y luego gana la apuesta en la cuarta ronda, terminará con 20 + 1-1-2 +4 = 22 dólares.
Se espera que complete la función g
, que toma dos argumentos:
- El primer argumento es un número entero,
a
que es el dinero inicial que tenemos cuando comenzamos a apostar. - El segundo argumento es una cadena
r
. El i-ésimo carácter del resultado será 'W' (ganar) o 'L' (perder), denotando el resultado de la i-ésima ronda.
Su función debe devolver la cantidad de dinero que tendrá después de jugar todas las rondas.
Si en algún momento no tiene suficiente dinero en su cuenta para cubrir el valor de la apuesta, debe detenerse y devolver la suma que tiene en ese momento.
Ejecución de la muestra
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
La función vuelve 1
en este caso
El ganador se determina por el menor número de caracteres DENTRO de la definición de función implícita. Coopere por idioma si lo desea. ¡Sé que el mío se puede mejorar!