day-08.jl (1339B)
1 function part_1(input) 2 width = 25 3 height = 6 4 num_layer = length(input) ÷ (width * height) 5 num_0 = zeros(num_layer) 6 num_1 = zeros(num_layer) 7 num_2 = zeros(num_layer) 8 for i in 1:length(input) 9 layer = (i - 1) ÷ (width * height) + 1 10 if input[i] == 0 11 num_0[layer] += 1 12 elseif input[i] == 1 13 num_1[layer] += 1 14 else 15 num_2[layer] += 1 16 end 17 end 18 min_0_layer = argmin(num_0) 19 Int(num_1[min_0_layer] * num_2[min_0_layer]) 20 end 21 22 function part_2(input) 23 width = 25 24 height = 6 25 num_layer = length(input) ÷ (width * height) 26 image = repeat([2], width * height) 27 for i in 1:length(image) 28 # Find first non-transparent cell. 29 layer = 1 30 while image[i] == 2 && layer <= num_layer 31 image[i] = input[(layer - 1) * width * height + i] 32 layer += 1 33 end 34 end 35 for h in 1:height 36 for w in 1:width 37 pixel = image[(h - 1) * width + w] 38 if pixel == 1 39 print("██") 40 else 41 print(" ") 42 end 43 end 44 println() 45 end 46 end 47 48 input = map(x -> parse(Int32, x), collect(readlines(open("input.txt"))[1])) 49 50 println("Julia:") 51 println("Part 1: ", part_1(input)) 52 println("Part 2: ") 53 part_2(input)