advent-of-code/12021/04/04.awk

63 lines
1.1 KiB
Awk

BEGIN{
RS = ""
}
NR==1{
split($0,nums,",")
# print nums[1]
}
NR>1{
delete marked
for(i=1;i<=length(nums);i++){
for(c=1;c<=NF;c++){
marked[c] += ($c == nums[i])
}
for(j=1;j<=5;j++) col[j] = 1
unmarkedsum = 0
rowr = 0
for(y=0;y<5;y++){
row = 1
for(x=0;x<5;x++){
ind = y*5 + x + 1;
if ( !marked[ind] ){
row = 0
col[x+1] = 0
unmarkedsum += $(ind)
}
}
if(row) rowr = 1
}
colr = 0
for(j=1;j<=5;j++){
if(col[j]){
colr = 1
break
}
}
if( rowr || colr){
ndrawn[NR] = i
num[NR] = nums[i]
unmsum[NR] = unmarkedsum
# print rowr, colr, NR, i, "ndrawn", ndrawn[NR], "num", nums[i], "ums", unmarkedsum
break
}
}
}
END{
maxndrawn = 1
maxindex = 1
minndrawn = 100
minindex = 1
for(i=2;i<=NR;i++){
if(ndrawn[i]<minndrawn){
minindex = i
minndrawn = ndrawn[i]
}
if(ndrawn[i]>maxndrawn){
maxindex = i
maxndrawn = ndrawn[i]
}
}
print "part 1", num[minindex], unmsum[minindex], num[minindex]*unmsum[minindex]
print "part 2", num[maxindex], unmsum[maxindex], num[maxindex]*unmsum[maxindex]
}