2017-12-31 127 views
3

Ich habe eine Sequenz sagen: 11, 11, 6, 4, 11, 10, 6, ... die die folgenden möglichen Kartenwerte für die Hand eines Spielers in Blackjack simuliert.Blackjack Asse Sequenz

Wenn die Summe dieser Zahlen akkumuliert bis 11 oder größer ist, ich versuche jeden Wert von 11, die nach diesem Punkt gleich 1

Wo die kumulative Summe kommt zu machen: 11, 22, 28, 32, ...

Gewünschtes Ergebnis: 11, 1, 6, 4, 1, 10, 6, ...

Hier ist, was ich mit dem Versuch erfolglos war:

nphand = c(11,11,6,4,11,10,6) 
v=cumsum(nphand) 
p=v[v<=11] 

for (i in (length(p)+1):length(nphand)){ 
    if (nphand[i]==11){ 
     nphand[i]==1 
    } 
} 

Irgendwelche Hilfe und/oder a dvice würde sehr geschätzt werden.

+1

Ihre Codes gut funktionieren. Die einzige Sache, die Sie ändern müssen, ist, dass Änderung doppeltes gleiches Symbol durch einzelnes am zweiten Teil ändert. Ich meine, benutze nphand [i] = 1 anstelle von nphand und [i] == 1. – maydin

Antwort

2

Dies sollte funktionieren.

nphand = c(11,11,6,4,11,10,6) 
v=cumsum(nphand) 
p=v[v<=11] 

for (i in 1:length(nphand)){ 
    cards <- nphand[1:i] 
    elevens <- cards[-1] %in% 11 
    if(sum(cards)>=11 & sum(elevens) >=1){ 
    cards[which(elevens) +1] <- 1 
    } 
    nphand[1:i] <- cards 
} 



> nphand 
    [1] 11 1 6 4 1 10 6 

Das sieht aus wie es abhängig von der ersten Karte ist seine 11. Die Lösung unten soll unabhängig arbeiten:

nphand = c(2,11,6,4,11,10,6) 
v=cumsum(nphand) 
p=v[v<=11] 

for (i in 1:length(nphand)){ 
    cards <- nphand[1:i] 
    elevens <- cards %in% 11 
    if(sum(cards)>=11 & sum(elevens) >=1){ 
    cards[which(elevens[-1]) + 1] <- 1 
    } 
    nphand[1:i] <- cards 
}