Vor einigen Monaten hatte ich diese Frage als Vorrätsel für ein Interview. Wenn ich kürzlich über Blog-Material nachdachte, tauchte es in meinem Kopf als gutes Beispiel für die funktionale Lösung eines Problems auf. Ich werde meine Lösung hier veröffentlichen, sobald ich mit dem Schreiben meines Blogposts fertig bin.
HINWEIS: Diese Frage wurde vor einem Jahr bei StackOverflow gestellt und nach einigen (falschen) Antworten abgelehnt. Ich nehme an, es wurde als offensichtliche Interview- oder Hausaufgabenfrage abgelehnt. Unsere Antworten sollten so tief in den Code eingearbeitet sein, dass jemand nicht daran denken kann, sie zu verwenden!
In einem Rennen setzen Sie mit der folgenden Strategie. Immer wenn Sie eine Wette verlieren, verdoppeln Sie den Wert der Wette für die nächste Runde. Wann immer Sie gewinnen, beträgt der Einsatz für die nächste Runde einen Dollar. Sie beginnen die Runde mit einem Einsatz von einem Dollar.
Wenn Sie zum Beispiel mit 20 Dollar beginnen und die Wette in der ersten Runde gewinnen, die Wette in den nächsten zwei Runden verlieren und dann die Wette in der vierten Runde gewinnen, erhalten Sie 20 + 1-1-2 +4 = 22 Dollar.
Es wird erwartet, dass Sie die Funktion abschließen g
, für die zwei Argumente erforderlich sind:
- Das erste Argument ist eine Ganzzahl,
a
die das anfängliche Geld ist, das wir haben, wenn wir mit dem Wetten beginnen. - Das zweite Argument ist eine Zeichenfolge
r
. Der i-te Charakter des Ergebnisses ist entweder "W" (Sieg) oder "L" (Niederlage), was das Ergebnis der i-ten Runde bezeichnet.
Ihre Funktion sollte den Geldbetrag zurückgeben, den Sie haben, nachdem alle Runden gespielt wurden.
Wenn Sie irgendwann nicht mehr genug Geld auf Ihrem Konto haben, um den Wert der Wette zu decken, müssen Sie anhalten und den Betrag zurückgeben, den Sie zu diesem Zeitpunkt haben.
Probelauf
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
Die Funktion kehrt 1
in diesem Fall zurück
Der Gewinner wird durch die Mindestanzahl von Zeichen IN der implizierten Funktionsdefinition bestimmt. Arbeiten Sie auf Wunsch nach Sprache zusammen. Ich weiß, meine kann verbessert werden!