Валидатор засчитывает только после изменения значения измененной плитки! В принципе это правильно, но об этом не сказано. Считаю правильным сначала производить действие в программе (или игре), а потом показывать это изменение. Валидатор принял это:
private boolean mergeRow(int[] row) {
        int length = row.length;
        boolean ret = false;
        for (int i = 0; i < length - 1; i++) {
            if (row[i] == 0) {
                continue;
            } else if (row[i] == row[i + 1]) {
                row[i] *= 2;
                score += row[i];
                setScore(score);
                row[i + 1] = 0;
                ret = true;
                i++;
            }
        }
        return ret;
    }