BEGIN { cycles = 1; X = 1; } function cycle() { if (cycles == 20 || (cycles-20) % 40 == 0) { sum += cycles * X; } crt[+x,+y] = ((X >= x-1 && X <= x+1) ? "#" : "."); if (++x == 40) { y++; x = 0; } cycles++; } /addx/ { cycle(); cycle(); X += $2; } /noop/ { cycle(); } END { print sum; for (y = 0; y < 6; ++y) { for (x = 0; x < 40; ++x) { printf "%s", crt[x,y]; } printf "\n"; } }