advent-of-code/12021/07/07_2.awk

32 lines
389 B
Awk

function abs(n){
return (n>=0) ? n : -n
}
function sum(n){
return n*(n+1)/2
}
BEGIN{
RS=","
}
{
c[NR] = $1
}
END{
maxpos=0
for(i=1;i<=NR;i++) if(maxpos<c[i]) maxpos=c[i]
min = 1000000000
for(i=1;i<=maxpos;i++){
difs = 0
for(j=1;j<=NR;j++){
difs += sum(abs(c[j]-i))
}
if(difs<min){
min = difs
cmin = i
}
# print c[i], difs
}
print "min", min, "cmin", cmin
}