Я пытаюсь написать блэкджек-код на R. Так как я новичок в этом языке, я сталкиваюсь с некоторыми трудностями. Я уже написал две разные функции, чтобы раздать первые 2 карты каждому игроку и подсчитать общее количество очков для каждой. Теперь я хочу написать функцию, основанную на результатах второй функции, чтобы решить, должен ли игрок взять другую карту или нет с некоторыми условиями. Вот код:
bj_add_card <- function(hand) {
hand <- bj_simplified(hand)
m_hand <- matrix(unlist(hand), ncol = 3, byrow = TRUE)
sums <- m_hand[,3]
sum_players <- as.vector(as.numeric(sums[-1]))
sum_dealer <- as.numeric(tail(sums), 1)
add_card <- vector("list")
for (i in seq_along(sum_players)) {
if(sum_players[i] <= 11) {
add_card[i] <- sample(Spielkarten, 1)
}
else if(sum_players[i] >= 17) {
add_card[i] <- "stay"
}
else if(11 > sum_players[i] && sum_players[i] < 17) {
if(sum_players[i] == 12 && sum_dealer == 4 || 5 || 6) {
add_card[i] <- "stay"
}
else if(sum_players[i] == 12 && sum_dealer != 4 || 5 || 6) {
add_card[i] <- sample(Spielkarten, 1)
}
else if(sum_players[i] == 13 || 14 || 15 || 16 && sum_dealer ==
2||3||4||5||6||7||8||9||10) {
add_card[i] <- "stay"
}
else if(sum_players[i] == 13 || 14 || 15 || 16 && sum_dealer !=
2||3||4||5||6||7||8||9||10) {
add_card[i] <- sample(Spielkarten, 1)
}
}
}
return(add_card)
}
bj_add_card(6)
Я действительно не вижу проблемы. Каждый раз, когда я вызываю эту функцию, выводом является список (как и должно быть) с различным количеством аргументов, но он не всегда совпадает с номером ввода, хотя и должен. Иногда это дает мне «NULL» в качестве вывода без какой-либо причины. Я думаю, что это проблема перезаписи, но я не могу понять, где проблема. Есть идеи?