Diversi mesi fa ho avuto questa domanda come puzzle pre-screening per un'intervista. Di recente, quando ho pensato al materiale del blog, mi è venuto in mente come un buon esempio da utilizzare per risolvere un problema funzionalmente. Pubblicherò la mia soluzione non appena avrò finito di scrivere il mio post sul blog.
NOTA: questa domanda è stata posta su StackOverflow un anno fa ed è stata sottoposta a downgrade dopo alcune (errate) risposte. Presumo che sia stato sottoposto a downgrade per ovvia intervista o domanda a casa. Le nostre risposte qui dovrebbero essere codificate a sufficienza per impedire a qualcuno di pensare di usarle!
In una gara, scommetti usando la seguente strategia. Ogni volta che perdi una scommessa, raddoppi il valore della scommessa per il round successivo. Ogni volta che vinci, la scommessa per il prossimo round sarà di un dollaro. Inizi il round scommettendo un dollaro.
Ad esempio, se inizi con 20 dollari e vinci la scommessa nel primo round, perdi la scommessa nei due round successivi e poi vinci la scommessa nel quarto round, finirai con 20 + 1-1-2 +4 = 22 dollari.
Ci si aspetta che completi la funzione g
, che accetta due argomenti:
- Il primo argomento è un numero intero
a
che è il denaro iniziale che abbiamo quando abbiamo iniziato le scommesse. - Il secondo argomento è una stringa
r
. Il suo carattere di risultato sarà 'W' (vittoria) o 'L' (perdita), indicando il risultato del suo turno.
La tua funzione dovrebbe restituire la quantità di denaro che avrai dopo aver giocato tutti i round.
Se a un certo punto non hai abbastanza soldi nel tuo conto per coprire il valore della scommessa, devi fermarti e restituire la somma che hai a quel punto.
Esecuzione del campione
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 funzione ritorna 1
in questo caso
Il vincitore è determinato dal numero minimo di caratteri INTERNI della definizione di funzione implicita. Cooperare per lingua se lo si desidera. So che il mio può essere migliorato!