Advent of Code

Diff
Login

Diff

Differences From Artifact [4d7b1de895]:

To Artifact [f86e25f6c6]:


67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
            bool looping = false;
            while (!looping && validpos(size, row_pos + deltarow, col_pos + deltacol)) {
                switch (data[linearize2d(size, (unsigned)(row_pos+deltarow), (unsigned)(col_pos+deltacol))]) {
                    default: puts("stepped on default"); exit(EXIT_FAILURE);
                    case '#': if (data[linearize2d(size, (unsigned)(row_pos), (unsigned)(col_pos))] == '8') looping = true;
                              rightturn(&deltarow, &deltacol);
                              break;
                    case '8': looping = true; break;
                    case '.': data[linearize2d(size, (unsigned)(row_pos+deltarow), (unsigned)(col_pos+deltacol))] = '0';
                              /*fallthrough*/
                    case '1':
                    case '2':
                    case '3':
                    case '4':
                    case '5':
                    case '6':
                    case '7': data[linearize2d(size, (unsigned)(row_pos+deltarow), (unsigned)(col_pos+deltacol))]++;
                              row_pos += deltarow;
                              col_pos += deltacol;
                              break;
                }
            }
            if (looping) positions++;
        }







|




<
<
<
<
|







67
68
69
70
71
72
73
74
75
76
77
78




79
80
81
82
83
84
85
86
            bool looping = false;
            while (!looping && validpos(size, row_pos + deltarow, col_pos + deltacol)) {
                switch (data[linearize2d(size, (unsigned)(row_pos+deltarow), (unsigned)(col_pos+deltacol))]) {
                    default: puts("stepped on default"); exit(EXIT_FAILURE);
                    case '#': if (data[linearize2d(size, (unsigned)(row_pos), (unsigned)(col_pos))] == '8') looping = true;
                              rightturn(&deltarow, &deltacol);
                              break;
                    case '4': looping = true; break;
                    case '.': data[linearize2d(size, (unsigned)(row_pos+deltarow), (unsigned)(col_pos+deltacol))] = '0';
                              /*fallthrough*/
                    case '1':
                    case '2':




                    case '3': data[linearize2d(size, (unsigned)(row_pos+deltarow), (unsigned)(col_pos+deltacol))]++;
                              row_pos += deltarow;
                              col_pos += deltacol;
                              break;
                }
            }
            if (looping) positions++;
        }