63 lines
1.1 KiB
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]
|
|
}
|