1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
BEGIN { cycles = 1; X = 1; } function cycle() { if (cycles == 20 || (cycles-20) % 40 == 0) { sum += cycles * X; } cycles++; } /addx/ { cycle(); cycle(); X += $2; } /noop/ { cycle(); } END { print sum; }