Advent of Code

Diff
Login

Diff

Differences From Artifact [8deec3b966]:

To Artifact [50f843a30c]:


50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
    }
    printf("There are %u antinodes within the map.\n", nanti);
}

/* === aoc202407 =======================================================
   Part one looks easy
   Part two also easy
   ===================================================================== */

static unsigned long long concat(unsigned long long a, unsigned long long b) {
        unsigned long long r = a, t = b;
        while (b) {
                r *= 10;
                b /= 10;
        }
        return r + t;
}

static int operatorsrequired(unsigned long long v, unsigned long long *a, size_t n, int minop) {
        // assumes no unsigned long long overflowing
        if (n == 1) {
                if (v == *a) return minop;
                return 0;
    }
    unsigned long long tmp = a[1];
    int pplus, pmult, pconcat = 0;
    a[1] = a[0] + tmp;
    pplus = operatorsrequired(v, a+1, n-1, 2);
    a[1] = tmp;
    a[1] = a[0] * tmp;







|


|
|
|
|
|
|



|
|
|
|







50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
    }
    printf("There are %u antinodes within the map.\n", nanti);
}

/* === aoc202407 =======================================================
   Part one looks easy
   Part two also easy
 ===================================================================== */

static unsigned long long concat(unsigned long long a, unsigned long long b) {
    unsigned long long r = a, t = b;
    while (b) {
        r *= 10;
        b /= 10;
    }
    return r + t;
}

static int operatorsrequired(unsigned long long v, unsigned long long *a, size_t n, int minop) {
    // assumes no unsigned long long overflowing
    if (n == 1) {
        if (v == *a) return minop;
        return 0;
    }
    unsigned long long tmp = a[1];
    int pplus, pmult, pconcat = 0;
    a[1] = a[0] + tmp;
    pplus = operatorsrequired(v, a+1, n-1, 2);
    a[1] = tmp;
    a[1] = a[0] * tmp;