Birkaç ay önce bu soruyu bir röportaj için ön tarama bulmacası olarak aldım. Son zamanlarda blog materyalini düşünürken, bir problemi işlevsel olarak çözmek için kullanmak için iyi bir örnek olarak kafamda ortaya çıktı. Blog gönderimi yazmayı bitirir bitirmez çözümümü buna göndereceğim.
Not: Bu soru, bir yıl önce StackOverflow soruldu ve birkaç (yanlış) cevap sonra indirildi. Açık bir röportaj veya ev ödevi sorusu olarak kabul edilmediğini düşünüyorum. Buradaki cevaplarımız, birisinin onları kullanmayı düşünmemesi için yeterince derin bir şekilde kodlanmalıdır!
Bir yarışta aşağıdaki stratejiyi kullanarak bahis oynarsınız. Bir bahsi kaybettiğinizde, bir sonraki tur için bahsin değerini iki katına çıkarırsınız. Ne zaman kazanırsanız, bir sonraki tur için bahis bir dolar olacaktır. Tura bir dolar bahis yaparak başlıyorsunuz.
Örneğin, 20 dolar ile başlar ve ilk turda bahsi kazanırsanız, sonraki iki turda bahsi kaybederseniz ve dördüncü turda bahsi kazanırsanız, 20 + 1-1-2 ile bitirirsiniz. +4 = 22 dolar.
g
İki argüman alan işlevi tamamlamanız bekleniyor :
- İlk argüman,
a
bahse başladığımızda sahip olduğumuz ilk para olan bir tamsayıdır . - İkinci argüman bir dizedir
r
. Sonucun ith karakteri 'W' (galibiyet) veya 'L' (kaybetmek) olacak ve dördüncü turun sonucunu gösterecektir.
İşleviniz tüm turlar oynandıktan sonra sahip olacağınız para miktarını iade etmelidir.
Bir noktada hesabınızda bahsin değerini karşılayacak kadar paranız yoksa, o noktada sahip olduğunuz meblağı durdurmanız ve iade etmeniz gerekir.
Örnek çalışma
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
1
Bu durumda işlev geri döner
Kazanan, zımni fonksiyon tanımının İÇİNDEKİ en az karakter sayısına göre belirlenir. İsterseniz dil ile işbirliği yapın. Benimkinin geliştirilebileceğini biliyorum!