function task0(file) rand_numbers = readline(file) |> x -> split(x, ",") .|> x -> parse(Int, x) boards = [] while !eof(file) push!(boards, [readline(file, keep = true) for i = 1:6] |> x -> vcat("[", x, "]") |> join |> Meta.parse |> eval |> x -> convert(Array{Union{Int,Missing},2}, x) ) end for number in rand_numbers for board in boards board[(board.==number).&map(!, board .=== missing)] .= missing if any(map(!, (board .=== missing)) * ones(size(board, 2)) .== 0) || any(map(!, (board .=== missing))' * ones(size(board, 1)) .== 0) return sum(skipmissing(board)) * number end end end boards end ## println("Day 04 – Task 1 – Case 0") open(task0, "day04\\data\\case00.txt") |> println println("Day 04 – Task 1 – Case 1") open(task0, "day04\\data\\case01.txt") |> println ## function task1(file) rand_numbers = readline(file) |> x -> split(x, ",") .|> x -> parse(Int, x) boards = [] while !eof(file) push!(boards, [readline(file, keep = true) for i = 1:6] |> x -> vcat("[", x, "]") |> join |> Meta.parse |> eval |> x -> convert(Array{Union{Int,Missing},2}, x) ) end for number in rand_numbers toremove = [] for (i, board) in enumerate(boards) board[(board.==number).&map(!, board .=== missing)] .= missing if any(map(!, (board .=== missing)) * ones(size(board, 2)) .== 0) || any(map(!, (board .=== missing))' * ones(size(board, 1)) .== 0) if length(boards) == 1 return sum(skipmissing(board)) * number else push!(toremove, i) end end end boards = toremove |> x -> deleteat!(boards, x) end boards end ## println("Day 04 – Task 2 – Case 0") open(task1, "day04\\data\\case00.txt") |> println println("Day 03 – Task 2 – Case 1") open(task1, "day04\\data\\case01.txt") |> println