Il y a plusieurs mois, j'avais cette question comme un puzzle de présélection pour une interview. Récemment, en pensant au matériel de blog, il m'est apparu comme un bon exemple à utiliser pour résoudre un problème de manière fonctionnelle. Je publierai ma solution dès que j'aurai fini d'écrire mon blog.
REMARQUE: Cette question a été posée sur StackOverflow il y a un an et a été déclassée après quelques réponses (incorrectes). Je suppose qu'il a été sous-estimé pour être une interview évidente ou une question de devoirs. Nos réponses ici devraient être suffisamment approfondies pour que quelqu'un ne pense pas à les utiliser!
Dans une course, vous misez en utilisant la stratégie suivante. Chaque fois que vous perdez une mise, vous doublez la valeur de la mise pour le tour suivant. Chaque fois que vous gagnez, la mise pour le prochain tour sera d'un dollar. Vous commencez le tour en misant un dollar.
Par exemple, si vous commencez avec 20 dollars et que vous gagnez le pari au premier tour, perdez le pari aux deux tours suivants et gagnez ensuite le pari au quatrième tour, vous vous retrouverez avec 20 + 1-1-2 +4 = 22 dollars.
Vous devez terminer la fonction g
, qui prend deux arguments:
- Le premier argument est un entier
a
qui est l'argent initial que nous avons lorsque nous commençons les paris. - Le deuxième argument est une chaîne
r
. Le ième caractère du résultat sera soit «W» (victoire) ou «L» (perte), dénotant le résultat du ième tour.
Votre fonction devrait retourner le montant d'argent que vous aurez après avoir joué tous les tours.
Si à un moment donné, vous n'avez pas assez d'argent sur votre compte pour couvrir la valeur du pari, vous devez arrêter et retourner la somme que vous avez à ce moment-là.
Exemple d'exécution
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 fonction retourne 1
dans ce cas
Le gagnant est déterminé par le moins de caractères à L'INTÉRIEUR de la définition de fonction implicite. Coopérez par langue si vous le souhaitez. Je sais que le mien peut être amélioré!