library(tidyverse) main <- function() { end <- 'http://www.ime.usp.br/~lago/dadinhos/times.csv' times <- read_delim(end, delim=",", col_types='ccnnnniiilll') times <- escolhe_chaves(times) jogos <- data.frame(rodada=character(), chave=integer(), time1=character(), time2=character(), placar=character()) for (r in c('rodada1', 'rodada2', 'rodada3', 'final')) { tmp <- rodada(r, times, jogos) times <- tmp[[1]] jogos <- tmp[[2]] # Isto pode ser útil durante o desenvolvimento #cat("--- APÓS RODADA", r, "---\n") #print(times) #print(jogos) #cat("--------\n") } cat("O placar dos jogos foi:\n") print(jogos) vencedor <- unlist(times[times$final, 'time']) cat("O vencedor do campeonato é", vencedor, "\n") #print(times) } escolhe_chaves <- function(times) { appsp <- unlist(times[times$federação == 'APPSP', 'time']) fffmb <- unlist(times[times$federação == 'FFFMB', 'time']) appsp <- sample(appsp) fffmb <- sample(fffmb) for (i in seq_len(4)) { times[times$time %in% appsp[c(2*i - 1, 2*i)], 'chave'] <- i times[times$time %in% fffmb[c(2*i - 1, 2*i)], 'chave'] <- i } return(times) } rodada <- function(rodada, times, jogos) { if (rodada == 'rodada1') { return (rodada1(times, jogos)) } else { return (rodada23final(rodada, times, jogos)) } } ngols <- function(time, adversário, times) { } partida <- function(t1, t2, times, empateOK) { } atualiza_saúde <- function (t, times) { } rodada1 <- function(times, jogos) { } rodada23final <- function(rodada, times, jogos) { if (rodada == 'rodada2') { classificados <- classificados_rodada2(times) } else if (rodada == 'rodada3') { classificados <- classificados_rodada3(times) } else { classificados <- classificados_final(times) } for (i in seq_len(length(classificados)/2)) { t1 <- classificados[[2*i - 1]] t2 <- classificados[[2*i]] times <- atualiza_saúde(t1, times) times <- atualiza_saúde(t2, times) result <- partida(t1, t2, times, FALSE) gols_t1 <- result[[1]] gols_t2 <- result[[2]] tmp <- registra_e_pontua(rodada, 0, t1, t2, gols_t1, gols_t2, times, jogos) times <- tmp[[1]] jogos <- tmp[[2]] } return(tmp) } pontua_rodada1 <- function(t1, t2, gols_t1, gols_t2, times) { } pontua_rodada23final <- function (rodada, t1, t2, gols_t1, gols_t2, times) { if (gols_t1 > gols_t2) { times[times$time == t1, rodada] <- TRUE } else { times[times$time == t2, rodada] <- TRUE } return(times) } classificados_rodada2 <- function(times) { classificados <- character() for (chave in seq_len(4)) { tmp <- times[times$chave == chave,] tmp <- tmp[order(tmp$pontos, tmp$saldo_gols, decreasing=TRUE),] melhores2 <- unlist(tmp[1:2, 'time']) classificados <- c(classificados, melhores2) } return(sample(classificados)) } classificados_rodada3 <- function(times) { classificados <- unlist(times[times$rodada2, 'time']) return(sample(classificados)) } classificados_final <- function(times) { } registra_e_pontua <- function(rodada, chave, t1, t2, gols_t1, gols_t2, times, jogos) { jogo <- list(rodada=rodada, chave=chave, time1=t1, time2=t2, placar=paste(gols_t1,gols_t2,sep='x')) jogos <- rbind(jogos, jogo) if (rodada == 'rodada1') { times <- pontua_rodada1(t1, t2, gols_t1, gols_t2, times) } else { times <- pontua_rodada23final(rodada, t1, t2, gols_t1, gols_t2, times) } return(list(times, jogos)) } main()