for (unsigned int i = 0; i < self->size; ++i) {
if (direction == UP || direction == DOWN) {
self->getCol(self, rowcol, i);
} else self->getRow(self, rowcol, i);
for (int j = start; j != end; j += delta) {
if (rowcol[j] == EMPTY) continue;
if (buf[idx] == EMPTY) buf[idx] = rowcol[i];
else if (rowcol[i] == buf[idx]) {
++buf[idx];
self->score += 1 << buf[idx];
} else {
idx += delta;