# part 2
dt <- data.frame (fread ("input2.txt" ))
call <- c (84 ,28 ,29 ,75 ,58 ,71 ,26 ,6 ,73 ,74 ,41 ,39 ,87 ,37 ,16 ,79 ,55 ,60 ,62 ,80 ,64 ,95 ,46 ,15 ,5 ,47 ,2 ,35 ,32 ,78 ,89 ,90 ,96 ,33 ,4 ,69 ,42 ,30 ,54 ,85 ,65 ,83 ,44 ,63 ,20 ,17 ,66 ,81 ,67 ,77 ,36 ,68 ,82 ,93 ,10 ,25 ,9 ,34 ,24 ,72 ,91 ,88 ,11 ,38 ,3 ,45 ,14 ,56 ,22 ,61 ,97 ,27 ,12 ,48 ,18 ,1 ,31 ,98 ,86 ,19 ,99 ,92 ,8 ,43 ,52 ,23 ,21 ,0 ,7 ,50 ,57 ,70 ,49 ,13 ,51 ,40 ,76 ,94 ,53 ,59 )
bingo <- 0
bingoTF <- FALSE
boards <- nrow (dt) / 5
for (i in 1 : length (call)) {
dt$ V1[dt$ V1 == call[i]] <- NA
dt$ V2[dt$ V2 == call[i]] <- NA
dt$ V3[dt$ V3 == call[i]] <- NA
dt$ V4[dt$ V4 == call[i]] <- NA
dt$ V5[dt$ V5 == call[i]] <- NA
for (R in seq (1 , nrow (dt), 5 )) {
if (sum (is.na (dt[R: (R + 4 ), 1 : 5 ])) != 25 ) {
for (r in R: (R + 4 )) {
if (sum (is.na (dt[r, ])) == 5 ) {
dt[r, ] <- NA
bingo <- append (bingo, i)
bingoTF <- TRUE
break
}
}
for (c in 1 : 5 ) {
if (sum (is.na (dt[R: (R + 4 ), c])) == 5 ) {
dt[R: (R + 4 ), c] <- NA
bingo <- append (bingo, i)
bingoTF <- TRUE
break
}
}
if (bingoTF) {
dt[R: (R + 4 ),] <- NA
bingo <- append (bingo, i)
bingoTF <- FALSE
}
}
}
}
dt <- data.frame (fread ("input2.txt" ))
bingoTF <- FALSE
for (i in 1 : (bingo[length (bingo)]- 1 )) {
dt$ V1[dt$ V1 == call[i]] <- NA
dt$ V2[dt$ V2 == call[i]] <- NA
dt$ V3[dt$ V3 == call[i]] <- NA
dt$ V4[dt$ V4 == call[i]] <- NA
dt$ V5[dt$ V5 == call[i]] <- NA
for (R in seq (1 , nrow (dt), 5 )) {
if (sum (is.na (dt[R: (R + 4 ), 1 : 5 ])) != 25 ) {
for (r in R: (R + 4 )) {
if (sum (is.na (dt[r, ])) == 5 ) {
dt[r, ] <- NA
bingoTF <- TRUE
break
}
}
for (c in 1 : 5 ) {
if (sum (is.na (dt[R: (R + 4 ), c])) == 5 ) {
dt[R: (R + 4 ), c] <- NA
bingoTF <- TRUE
break
}
}
if (bingoTF) {
dt[R: (R + 4 ),] <- NA
bingoTF <- FALSE
}
}
}
}
dt <- tail (dt[rowSums (dt, na.rm = TRUE ) != 0 ,], 5 )
i <- i + 1
dt$ V1[dt$ V1 == call[i]] <- NA
dt$ V2[dt$ V2 == call[i]] <- NA
dt$ V3[dt$ V3 == call[i]] <- NA
dt$ V4[dt$ V4 == call[i]] <- NA
dt$ V5[dt$ V5 == call[i]] <- NA
sum (dt, na.rm = TRUE ) * call[i]