ranks <- c("2", "3", "4", "5", "6", "7", "8", "9", "T", "J", "Q", "K", "A")
calculate_equity_suited <- function(hand) {
path_base <- paste0("../")
file_prefix <- paste0(hand)
files <- list(
suited_same = paste0(path_base, "Suited_vs_Suited/", file_prefix, "_vs_suited_same.csv"),
suited_diff = paste0(path_base, "Suited_vs_Suited/", file_prefix, "_vs_suited_different.csv"),
one_unsuited = paste0(path_base, "Suited_vs_1Unsuited/", file_prefix, "_vs_1unsuited.csv"),
two_unsuited = paste0(path_base, "Suited_vs_2Unsuited/", file_prefix, "_vs_2unsuited.csv")
)
data_list <- lapply(files, read.csv)
sim_number <- 2175 * sum(sapply(data_list, nrow))
equity_list <- lapply(data_list, function(df) {
colSums(df[ , grepl("_Wins$|^Draws", names(df))])
})
total_equity <- Reduce(`+`, equity_list)
sumequity <- sum(total_equity) / sim_number
return(sumequity*100)
}
equity_matrix_suited <- matrix(NA, nrow = length(ranks), ncol = length(ranks),
dimnames = list(ranks, ranks))
for (i in 1:(length(ranks) - 1)) {
for (j in (i+1):length(ranks)) {
hand_name <- paste0(ranks[i], "_", ranks[j], "_suited")
equity <- calculate_equity_suited(hand_name)
equity_matrix_suited[ranks[i], ranks[j]] <- equity
}
}
library(ggplot2)
## Warning: pakiet 'ggplot2' został zbudowany w wersji R 4.4.3
library(reshape2)
## Warning: pakiet 'reshape2' został zbudowany w wersji R 4.4.3
df1 <- melt(equity_matrix_suited, na.rm = TRUE)
colnames(df1) <- c("Card1", "Card2", "Equity")
ggplot(df1, aes(x = Card1, y = Card2, fill = Equity)) +
geom_tile(color = "white") +
scale_fill_gradient2(low = "darkred", mid = "lightyellow", high = "darkgreen", midpoint = median(df1$Equity)) +
scale_x_discrete(position = "top") +
scale_y_discrete(limits = rev(levels(df1$Card2))) +
labs(title = "Overall equity suited", x = "Karta 1", y = "Karta 2") +
theme_minimal() +
coord_fixed() +
geom_text(aes(label = round(Equity, 1)), color = "black", size = 3)

ranks <- c("2", "3", "4", "5", "6", "7", "8", "9", "T", "J", "Q", "K", "A")
calculate_equity_unsuited <- function(hand1, hand2) {
path_base <- paste0("../")
files <- list(
unsuited_same = paste0(path_base, "2Unsuited_vs_Unsuited/", hand1, "_2unsuited_vs_unsuited_same.csv"),
unsuited_diff = paste0(path_base, "2Unsuited_vs_Unsuited/", hand1, "_2unsuited_vs_unsuited_different.csv"),
two_unsuited_suited = paste0(path_base, "2Unsuited_vs_Suited/", hand1, "_2unsuited_vs_suited.csv"),
one_unsuited_unsuited = paste0(path_base, "1Unsuited_vs_Unsuited/", hand1, "_1unsuited_vs_unsuited.csv"),
one_unsuited_suited = paste0(path_base, "1Unsuited_vs_Suited/", hand1, "_1unsuited_vs_suited.csv"),
unsuited_same2 = paste0(path_base, "2Unsuited_vs_Unsuited/", hand2, "_2unsuited_vs_unsuited_same.csv"),
unsuited_diff2 = paste0(path_base, "2Unsuited_vs_Unsuited/", hand2, "_2unsuited_vs_unsuited_different.csv"),
two_unsuited_suited2 = paste0(path_base, "2Unsuited_vs_Suited/", hand2, "_2unsuited_vs_suited.csv"),
one_unsuited_unsuited2 = paste0(path_base, "1Unsuited_vs_Unsuited/", hand2, "_1unsuited_vs_unsuited.csv"),
one_unsuited_suited2 = paste0(path_base, "1Unsuited_vs_Suited/", hand2, "_1unsuited_vs_suited.csv")
)
data_list <- lapply(files, function(f) {
if (file.exists(f)) {
read.csv(f)
} else {
NULL
}
})
data_list <- Filter(Negate(is.null), data_list)
sim_number <- 2175 * sum(sapply(data_list, nrow))
equity_list <- lapply(data_list, function(df) {
colSums(df[ , grepl("_Wins$|^Draws", names(df))])
})
total_equity <- Reduce(`+`, equity_list)
sumequity <- sum(total_equity) / sim_number
return(sumequity*100)
}
calculate_equity_unsuited_pairs <- function(hand) {
path_base <- paste0("../")
files <- list(
unsuited_same = paste0(path_base, "2Unsuited_vs_Unsuited/", hand, "_2unsuited_vs_unsuited_same.csv"),
unsuited_diff = paste0(path_base, "2Unsuited_vs_Unsuited/", hand, "_2unsuited_vs_unsuited_different.csv"),
two_unsuited_suited = paste0(path_base, "2Unsuited_vs_Suited/", hand, "_2unsuited_vs_suited.csv"),
one_unsuited_unsuited = paste0(path_base, "1Unsuited_vs_Unsuited/", hand, "_1unsuited_vs_unsuited.csv"),
one_unsuited_suited = paste0(path_base, "1Unsuited_vs_Suited/", hand, "_1unsuited_vs_suited.csv")
)
data_list <- lapply(files, read.csv)
sim_number <- 2175 * sum(sapply(data_list, nrow))
equity_list <- lapply(data_list, function(df) {
colSums(df[ , grepl("_Wins$|^Draws", names(df))])
})
total_equity <- Reduce(`+`, equity_list)
sumequity <- sum(total_equity) / sim_number
return(sumequity*100)
}
equity_matrix_unsuited <- matrix(NA, nrow = length(ranks), ncol = length(ranks),
dimnames = list(ranks, ranks))
for (i in 1:(length(ranks))) {
for (j in i:(length(ranks))) {
if (i == j){
hand_name <- paste0(ranks[i], "_", ranks[j])
equity <- calculate_equity_unsuited_pairs(hand_name)
equity_matrix_unsuited[ranks[i], ranks[j]] <- equity
}else{
hand_name1 <- paste0(ranks[i], "_", ranks[j])
hand_name2 <- paste0(ranks[j], "_", ranks[i])
equity <- calculate_equity_unsuited(hand_name1, hand_name2)
equity_matrix_unsuited[ranks[i], ranks[j]] <- equity
}
}
}
df2 <- melt(equity_matrix_unsuited, na.rm = TRUE)
colnames(df2) <- c("Card1", "Card2", "Equity")
ggplot(df2, aes(x = Card1, y = Card2, fill = Equity)) +
geom_tile(color = "white") +
scale_fill_gradient2(low = "darkred", mid = "lightyellow", high = "darkgreen", midpoint = median(df2$Equity)) +
scale_x_discrete(position = "top") +
scale_y_discrete(limits = rev(levels(df2$Card2))) +
labs(title = "Overall equity offsuited", x = "Karta 1", y = "Karta 2") +
theme_minimal() +
coord_fixed() +
geom_text(aes(label = round(Equity, 1)), color = "black", size = 3)
