Compare commits
11 Commits
de24a05dc1
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 97cddfb64a | |||
| 439b4479e7 | |||
| f9d24c208c | |||
| 4b1c47105a | |||
| 66770b33fd | |||
| 0f0b64b0ba | |||
| 5ff2d0cb1d | |||
| d3a49dd06f | |||
| 0e6f8264f9 | |||
| ebe63f32e4 | |||
| 03ce5438e3 |
106
06/06.c
Normal file
106
06/06.c
Normal file
@@ -0,0 +1,106 @@
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
#include <math.h>
|
||||
|
||||
#define DEFAULT_FILE "input3.txt"
|
||||
#define STRBUF_LEN 200
|
||||
#define ISDIGIT(X) (X >= '0' && X <= '9')
|
||||
|
||||
#define NUM_RACES 1
|
||||
|
||||
uint64_t parse_num(char *str)
|
||||
{
|
||||
uint64_t num = 0;
|
||||
while (ISDIGIT(*str))
|
||||
{
|
||||
num = (num * 10) + (*str - '0');
|
||||
str++;
|
||||
}
|
||||
return num;
|
||||
}
|
||||
|
||||
void parse_line(char *str, uint64_t *nums)
|
||||
{
|
||||
uint64_t race = 0;
|
||||
|
||||
for (race = 0; race < NUM_RACES; race++)
|
||||
{
|
||||
while (!ISDIGIT(*str)) str++;
|
||||
nums[race] = parse_num(str);
|
||||
while (ISDIGIT(*str)) str++;
|
||||
}
|
||||
}
|
||||
|
||||
// Solves for the 0-intersection points, placing the results in result1 and result2.
|
||||
// Returns true if it can be solved, returns false if it is unsolvable.
|
||||
bool solve_quadratic(uint64_t time, uint64_t distance, uint64_t *result1, uint64_t *result2)
|
||||
{
|
||||
double doubleres1;
|
||||
double doubleres2;
|
||||
int64_t s = (time * time) - (4 * distance);
|
||||
if (s < 0) return false;
|
||||
doubleres1 = ( time - sqrt(s) ) / 2;
|
||||
doubleres2 = ( time + sqrt(s) ) / 2;
|
||||
|
||||
if (doubleres1 == (double)(ceil(doubleres1))) doubleres1 += 1;
|
||||
*result1 = ceil(doubleres1);
|
||||
|
||||
if (doubleres2 == (double)(floor(doubleres2))) doubleres2 -= 1;
|
||||
*result2 = floor(doubleres2);
|
||||
return true;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
// Get filename as an argument, if there is one
|
||||
char *path = (argc > 1) ? argv[1] : DEFAULT_FILE;
|
||||
|
||||
if (!path)
|
||||
{
|
||||
printf("Requires input file.\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
FILE *file = fopen(path, "r");
|
||||
char strbuf[STRBUF_LEN] = {0};
|
||||
|
||||
if (!file)
|
||||
{
|
||||
printf("Could not find file.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
uint64_t times[NUM_RACES] = {0};
|
||||
uint64_t dists[NUM_RACES] = {0};
|
||||
uint64_t results[NUM_RACES] = {0};
|
||||
|
||||
fgets(strbuf, STRBUF_LEN, file);
|
||||
parse_line(strbuf, times);
|
||||
|
||||
fgets(strbuf, STRBUF_LEN, file);
|
||||
parse_line(strbuf, dists);
|
||||
|
||||
uint64_t i = 0;
|
||||
uint64_t multiplied = 1;
|
||||
|
||||
for (i = 0; i < NUM_RACES; i++)
|
||||
{
|
||||
uint64_t res1;
|
||||
uint64_t res2;
|
||||
if (!solve_quadratic(times[i], dists[i], &res1, &res2))
|
||||
{
|
||||
printf("Error?? Invalid quadratic.\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
results[i] = res2 - res1 + 1;
|
||||
printf("%lu ", results[i]);
|
||||
multiplied *= results[i];
|
||||
}
|
||||
|
||||
printf("\nMultiplied: %lu\n", multiplied);
|
||||
|
||||
return 0;
|
||||
}
|
||||
2
06/input.txt
Normal file
2
06/input.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Time: 50 74 86 85
|
||||
Distance: 242 1017 1691 1252
|
||||
2
06/input2.txt
Normal file
2
06/input2.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Time: 7 15 30
|
||||
Distance: 9 40 200
|
||||
2
06/input3.txt
Normal file
2
06/input3.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Time: 50748685
|
||||
Distance: 242101716911252
|
||||
209
07/07-part2.c
Normal file
209
07/07-part2.c
Normal file
@@ -0,0 +1,209 @@
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#define DEFAULT_FILE "input.txt"
|
||||
#define STRBUF_LEN 200
|
||||
#define ISDIGIT(X) (X >= '0' && X <= '9')
|
||||
|
||||
typedef struct _hand
|
||||
{
|
||||
char cards[5]; // just for debugging
|
||||
int strength;
|
||||
int substrengths[5];
|
||||
int bid;
|
||||
} hand;
|
||||
|
||||
#define NUM_CARDS 13
|
||||
#define NUM_HANDS 1000
|
||||
|
||||
const char strengthlist[NUM_CARDS] = { 'J', '2', '3', '4', '5', '6', '7', '8', '9', 'T', 'Q', 'K', 'A' };
|
||||
|
||||
// This function could be faster I'm sure.
|
||||
// Instead of searching through an array,
|
||||
// the characters could be mapped with
|
||||
// a lookup table.
|
||||
// I'm lazy to do this right now.
|
||||
int parse_substrength(char c)
|
||||
{
|
||||
int i = 0;
|
||||
for (i = 0; i < NUM_CARDS; i++)
|
||||
{
|
||||
if (c == strengthlist[i]) return i;
|
||||
}
|
||||
}
|
||||
|
||||
int parse_strength(char *hand)
|
||||
{
|
||||
int hashmap[NUM_CARDS] = {0};
|
||||
int i = 0;
|
||||
for (i = 0; i < 5; i++)
|
||||
{
|
||||
int substrength = parse_substrength(hand[i]);
|
||||
hashmap[substrength]++;
|
||||
}
|
||||
|
||||
int most_duplicates = 0;
|
||||
int second_most_duplicates = 0;
|
||||
|
||||
for (i = 1; i < NUM_CARDS; i++)
|
||||
{
|
||||
if (hashmap[i] >= most_duplicates)
|
||||
{
|
||||
second_most_duplicates = most_duplicates;
|
||||
most_duplicates = hashmap[i];
|
||||
} else if (hashmap[i] >= second_most_duplicates)
|
||||
{
|
||||
second_most_duplicates = hashmap[i];
|
||||
}
|
||||
}
|
||||
|
||||
int js = hashmap[0];
|
||||
|
||||
// I'm sure there's a better way to do this.
|
||||
if (most_duplicates == 5) return 6; // Five of a kind
|
||||
if (most_duplicates + js == 5) return 6; // Five of a kind, jokers
|
||||
|
||||
if (most_duplicates == 4) return 5; // Four of a kind
|
||||
if (most_duplicates + js == 4) return 5; // Four of a kind, jokers
|
||||
|
||||
if (most_duplicates == 3 && second_most_duplicates == 2) return 4; // Full house
|
||||
if (most_duplicates == 2 && second_most_duplicates == 2 && js == 1) return 4; // Full house, jokers
|
||||
if (most_duplicates == 3 && second_most_duplicates == 1 && js == 1) return 4; // Full house, jokers
|
||||
|
||||
if (most_duplicates == 3) return 3; // Three of a kind
|
||||
if (most_duplicates + js == 3) return 3; // Three of a kind
|
||||
|
||||
if (most_duplicates == 2 && second_most_duplicates == 2) return 2; // Two pair
|
||||
if (most_duplicates == 2 && second_most_duplicates + js == 2) return 2; // Two pair
|
||||
|
||||
if (most_duplicates + js == 2) return 1; // Two of a kind
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Returns true if hand A beats hand B
|
||||
bool hand_beats(hand a, hand b)
|
||||
{
|
||||
if (a.strength != b.strength) return (a.strength > b.strength);
|
||||
|
||||
int i = 0;
|
||||
for (i = 0; i < NUM_CARDS; i++)
|
||||
{
|
||||
if (a.substrengths[i] != b.substrengths[i])
|
||||
{
|
||||
int suba = a.substrengths[i];
|
||||
int subb = b.substrengths[i];
|
||||
bool a_beats_b = suba > subb;
|
||||
return (a_beats_b);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
int parse_num(char *str)
|
||||
{
|
||||
int num = 0;
|
||||
while (ISDIGIT(*str))
|
||||
{
|
||||
num = (num * 10) + (*str - '0');
|
||||
str++;int strength[1000] = {0};
|
||||
int payout[1000] = {0};
|
||||
}
|
||||
return num;
|
||||
}
|
||||
|
||||
void sort(hand *hands)
|
||||
{
|
||||
// Insertion sort, because I'm too lazy.
|
||||
// Other sorting algorithms would be faster.
|
||||
// Try quicksort.
|
||||
int a = 0;
|
||||
int b = 0;
|
||||
for (a = NUM_HANDS - 1; a >= 0; a--)
|
||||
{
|
||||
for (b = NUM_HANDS - 1; b >= a; b--) {
|
||||
if (hand_beats(hands[a], hands[b]))
|
||||
{
|
||||
hand h = hands[a];
|
||||
hands[a] = hands[b];
|
||||
hands[b] = h;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
// Get filename as an argument, if there is one
|
||||
char *path = (argc > 1) ? argv[1] : DEFAULT_FILE;
|
||||
|
||||
if (!path)
|
||||
{
|
||||
printf("Requires input file.\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
FILE *file = fopen(path, "r");
|
||||
char strbuf[STRBUF_LEN] = {0};
|
||||
|
||||
if (!file)
|
||||
{
|
||||
printf("Could not find file.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
// ************************************
|
||||
// Begin Challenge
|
||||
// ************************************
|
||||
|
||||
hand hands[NUM_HANDS];
|
||||
hand sorted_hands[NUM_HANDS];
|
||||
|
||||
uint16_t i = 0;
|
||||
uint16_t k = 0;
|
||||
|
||||
while (fgets(strbuf, STRBUF_LEN, file))
|
||||
{
|
||||
hands[i].strength = parse_strength(strbuf);
|
||||
|
||||
for (k = 0; k < 5; k++)
|
||||
{
|
||||
hands[i].cards[k] = strbuf[k];
|
||||
hands[i].substrengths[k] = parse_substrength(strbuf[k]);
|
||||
}
|
||||
|
||||
hands[i].bid = parse_num(strbuf + 6);
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
printf("\n");
|
||||
sort(hands);
|
||||
|
||||
uint64_t winnings = 0;
|
||||
|
||||
for (i = NUM_HANDS - 1; i <= NUM_HANDS; i--)
|
||||
{
|
||||
printf("%c%c%c%c%c",
|
||||
hands[i].cards[0],
|
||||
hands[i].cards[1],
|
||||
hands[i].cards[2],
|
||||
hands[i].cards[3],
|
||||
hands[i].cards[4]);
|
||||
printf(" i: %.3d str: %.2d, %.2d %.2d %.2d %.2d %.2d, bid: %.3d\n",
|
||||
i + 1,
|
||||
hands[i].strength,
|
||||
hands[i].substrengths[0],
|
||||
hands[i].substrengths[1],
|
||||
hands[i].substrengths[2],
|
||||
hands[i].substrengths[3],
|
||||
hands[i].substrengths[4],
|
||||
hands[i].bid
|
||||
);
|
||||
winnings += hands[i].bid * (i + 1);
|
||||
}
|
||||
|
||||
printf("winnings: %lu\n", winnings);
|
||||
|
||||
return 0;
|
||||
}
|
||||
195
07/07.c
Normal file
195
07/07.c
Normal file
@@ -0,0 +1,195 @@
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#define DEFAULT_FILE "input.txt"
|
||||
#define STRBUF_LEN 200
|
||||
#define ISDIGIT(X) (X >= '0' && X <= '9')
|
||||
|
||||
typedef struct _hand
|
||||
{
|
||||
char cards[5]; // just for debugging
|
||||
int strength;
|
||||
int substrengths[5];
|
||||
int bid;
|
||||
} hand;
|
||||
|
||||
#define NUM_CARDS 13
|
||||
#define NUM_HANDS 1000
|
||||
|
||||
const char strengthlist[NUM_CARDS] = { '2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K', 'A' };
|
||||
|
||||
// This function could be faster I'm sure.
|
||||
// Instead of searching through an array,
|
||||
// the characters could be mapped with
|
||||
// a lookup table.
|
||||
// I'm lazy to do this right now.
|
||||
int parse_substrength(char c)
|
||||
{
|
||||
int i = 0;
|
||||
for (i = 0; i < NUM_CARDS; i++)
|
||||
{
|
||||
if (c == strengthlist[i]) return i;
|
||||
}
|
||||
}
|
||||
|
||||
int parse_strength(char *hand)
|
||||
{
|
||||
int hashmap[NUM_CARDS] = {0};
|
||||
int i = 0;
|
||||
for (i = 0; i < 5; i++)
|
||||
{
|
||||
int substrength = parse_substrength(hand[i]);
|
||||
hashmap[substrength]++;
|
||||
}
|
||||
|
||||
int most_duplicates = 0;
|
||||
int second_most_duplicates = 0;
|
||||
|
||||
for (i = 0; i < NUM_CARDS; i++)
|
||||
{
|
||||
if (hashmap[i] >= most_duplicates)
|
||||
{
|
||||
second_most_duplicates = most_duplicates;
|
||||
most_duplicates = hashmap[i];
|
||||
} else if (hashmap[i] >= second_most_duplicates)
|
||||
{
|
||||
second_most_duplicates = hashmap[i];
|
||||
}
|
||||
}
|
||||
|
||||
if (most_duplicates == 5) return 6; // Five of a kind
|
||||
if (most_duplicates == 4) return 5; // Four of a kind
|
||||
if (most_duplicates == 3 && second_most_duplicates == 2) return 4; // Full house
|
||||
if (most_duplicates == 3) return 3; // Three of a kind
|
||||
if (most_duplicates == 2 && second_most_duplicates == 2) return 2; // Two pair
|
||||
if (most_duplicates == 2) return 1; // Two of a kind
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Returns true if hand A beats hand B
|
||||
bool hand_beats(hand a, hand b)
|
||||
{
|
||||
if (a.strength != b.strength) return (a.strength > b.strength);
|
||||
|
||||
int i = 0;
|
||||
for (i = 0; i < NUM_CARDS; i++)
|
||||
{
|
||||
if (a.substrengths[i] != b.substrengths[i])
|
||||
{
|
||||
int suba = a.substrengths[i];
|
||||
int subb = b.substrengths[i];
|
||||
bool a_beats_b = suba > subb;
|
||||
return (a_beats_b);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
int parse_num(char *str)
|
||||
{
|
||||
int num = 0;
|
||||
while (ISDIGIT(*str))
|
||||
{
|
||||
num = (num * 10) + (*str - '0');
|
||||
str++;int strength[1000] = {0};
|
||||
int payout[1000] = {0};
|
||||
}
|
||||
return num;
|
||||
}
|
||||
|
||||
void sort(hand *hands)
|
||||
{
|
||||
// Insertion sort, because I'm too lazy.
|
||||
// Other sorting algorithms would be faster.
|
||||
// Try quicksort.
|
||||
int a = 0;
|
||||
int b = 0;
|
||||
for (a = NUM_HANDS - 1; a >= 0; a--)
|
||||
{
|
||||
for (b = NUM_HANDS - 1; b >= a; b--) {
|
||||
if (hand_beats(hands[a], hands[b]))
|
||||
{
|
||||
hand h = hands[a];
|
||||
hands[a] = hands[b];
|
||||
hands[b] = h;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
// Get filename as an argument, if there is one
|
||||
char *path = (argc > 1) ? argv[1] : DEFAULT_FILE;
|
||||
|
||||
if (!path)
|
||||
{
|
||||
printf("Requires input file.\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
FILE *file = fopen(path, "r");
|
||||
char strbuf[STRBUF_LEN] = {0};
|
||||
|
||||
if (!file)
|
||||
{
|
||||
printf("Could not find file.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
// ************************************
|
||||
// Begin Challenge
|
||||
// ************************************
|
||||
|
||||
hand hands[NUM_HANDS];
|
||||
hand sorted_hands[NUM_HANDS];
|
||||
|
||||
uint16_t i = 0;
|
||||
uint16_t k = 0;
|
||||
|
||||
while (fgets(strbuf, STRBUF_LEN, file))
|
||||
{
|
||||
hands[i].strength = parse_strength(strbuf);
|
||||
|
||||
for (k = 0; k < 5; k++)
|
||||
{
|
||||
hands[i].cards[k] = strbuf[k];
|
||||
hands[i].substrengths[k] = parse_substrength(strbuf[k]);
|
||||
}
|
||||
|
||||
hands[i].bid = parse_num(strbuf + 6);
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
printf("\n");
|
||||
sort(hands);
|
||||
|
||||
uint64_t winnings = 0;
|
||||
|
||||
for (i = NUM_HANDS - 1; i <= NUM_HANDS; i--)
|
||||
{
|
||||
printf("%c%c%c%c%c",
|
||||
hands[i].cards[0],
|
||||
hands[i].cards[1],
|
||||
hands[i].cards[2],
|
||||
hands[i].cards[3],
|
||||
hands[i].cards[4]);
|
||||
printf(" i: %.3d str: %.2d, %.2d %.2d %.2d %.2d %.2d, bid: %.3d\n",
|
||||
i + 1,
|
||||
hands[i].strength,
|
||||
hands[i].substrengths[0],
|
||||
hands[i].substrengths[1],
|
||||
hands[i].substrengths[2],
|
||||
hands[i].substrengths[3],
|
||||
hands[i].substrengths[4],
|
||||
hands[i].bid
|
||||
);
|
||||
winnings += hands[i].bid * (i + 1);
|
||||
}
|
||||
|
||||
printf("winnings: %lu\n", winnings);
|
||||
|
||||
return 0;
|
||||
}
|
||||
1000
07/input.txt
Normal file
1000
07/input.txt
Normal file
File diff suppressed because it is too large
Load Diff
5
07/input2.txt
Normal file
5
07/input2.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
32T3K 765
|
||||
T55J5 684
|
||||
KK677 28
|
||||
KTJJT 220
|
||||
QQQJA 483
|
||||
179
08/08-part2.c
Normal file
179
08/08-part2.c
Normal file
@@ -0,0 +1,179 @@
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <string.h>
|
||||
|
||||
#define DEFAULT_FILE "input.txt"
|
||||
#define STRBUF_LEN 300
|
||||
#define ISDIGIT(X) (X >= '0' && X <= '9')
|
||||
#define NUM_AS 200
|
||||
|
||||
#define HASHMAP_SIZE 17576 // 26 * 26 * 26
|
||||
|
||||
typedef struct _node
|
||||
{
|
||||
char letters[3];
|
||||
int left;
|
||||
int right;
|
||||
} node;
|
||||
|
||||
int hashnode(char *str)
|
||||
{
|
||||
bool err = false;
|
||||
|
||||
if (str[0] < 'A' || str[0] > 'Z') err = true;
|
||||
if (str[1] < 'A' || str[1] > 'Z') err = true;
|
||||
if (str[2] < 'A' || str[2] > 'Z') err = true;
|
||||
|
||||
if (err)
|
||||
{
|
||||
printf("Error in hashnode!");
|
||||
return -1;
|
||||
}
|
||||
|
||||
int first = str[0] - 'A';
|
||||
int second = str[1] - 'A';
|
||||
int third = str[2] - 'A';
|
||||
return (first * 26 * 26) + (second * 26) + third;
|
||||
}
|
||||
|
||||
bool all_zs(node *nodes, int *as, int numas)
|
||||
{
|
||||
int i = 0;
|
||||
for (i = 0; i < numas; i++)
|
||||
{
|
||||
int current_hash = as[i];
|
||||
node current_node = nodes[current_hash];
|
||||
if (current_node.letters[2] != 'Z') return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
int count_jumps_to_zzz(char *lrbuf, int start, node *nodes)
|
||||
{
|
||||
int instructionidx = 0;
|
||||
int currenthash = start;
|
||||
int numjumps = 0;
|
||||
|
||||
while(currenthash != HASHMAP_SIZE - 1)
|
||||
{
|
||||
if (lrbuf[instructionidx] != 'L' && lrbuf[instructionidx] != 'R') instructionidx = 0;
|
||||
bool is_left = lrbuf[instructionidx] == 'L';
|
||||
instructionidx++;
|
||||
|
||||
currenthash = is_left ? nodes[currenthash].left : nodes[currenthash].right;
|
||||
numjumps++;
|
||||
}
|
||||
return numjumps;
|
||||
}
|
||||
|
||||
int count_jumps_endsin_z(char *lrbuf, int start, node *nodes)
|
||||
{
|
||||
int instructionidx = 0;
|
||||
int currenthash = start;
|
||||
int numjumps = 0;
|
||||
|
||||
while(nodes[currenthash].letters[2] != 'Z')
|
||||
{
|
||||
if (lrbuf[instructionidx] != 'L' && lrbuf[instructionidx] != 'R') instructionidx = 0;
|
||||
bool is_left = lrbuf[instructionidx] == 'L';
|
||||
instructionidx++;
|
||||
|
||||
currenthash = is_left ? nodes[currenthash].left : nodes[currenthash].right;
|
||||
numjumps++;
|
||||
}
|
||||
return numjumps;
|
||||
}
|
||||
|
||||
int count_jumps_to_cycle(char *lrbuf, int start, node *nodes)
|
||||
{
|
||||
int instructionidx = 0;
|
||||
int currenthash = start;
|
||||
int numjumps = 0;
|
||||
|
||||
do
|
||||
{
|
||||
if (lrbuf[instructionidx] != 'L' && lrbuf[instructionidx] != 'R') instructionidx = 0;
|
||||
bool is_left = lrbuf[instructionidx] == 'L';
|
||||
instructionidx++;
|
||||
|
||||
currenthash = is_left ? nodes[currenthash].left : nodes[currenthash].right;
|
||||
numjumps++;
|
||||
}
|
||||
while(currenthash != start);
|
||||
|
||||
return numjumps;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
// Get filename as an argument, if there is one
|
||||
char *path = (argc > 1) ? argv[1] : DEFAULT_FILE;
|
||||
|
||||
if (!path)
|
||||
{
|
||||
printf("Requires input file.\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
FILE *file = fopen(path, "r");
|
||||
char strbuf[STRBUF_LEN] = {0};
|
||||
char lrbuf[STRBUF_LEN] = {0};
|
||||
|
||||
if (!file)
|
||||
{
|
||||
printf("Could not find file.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Begin Challenge
|
||||
|
||||
node nodes[HASHMAP_SIZE];
|
||||
int start_hashes[NUM_AS];
|
||||
|
||||
fgets(lrbuf, STRBUF_LEN, file);
|
||||
fgets(strbuf, STRBUF_LEN, file);
|
||||
|
||||
while(fgets(strbuf, STRBUF_LEN, file))
|
||||
{
|
||||
node current;
|
||||
int hash = hashnode(strbuf);
|
||||
int left = hashnode(strbuf + 7);
|
||||
int right = hashnode(strbuf + 12);
|
||||
|
||||
memcpy(nodes[hash].letters, strbuf, sizeof(char) * 3);
|
||||
nodes[hash].left = left;
|
||||
nodes[hash].right = right;
|
||||
}
|
||||
|
||||
int i = 0;
|
||||
int numas = 0;
|
||||
for (i = 0; i < HASHMAP_SIZE; i += 26)
|
||||
{
|
||||
if (nodes[i].letters[2] != 'A') continue;
|
||||
start_hashes[numas] = i;
|
||||
numas++;
|
||||
printf("Start: %c%c%c\n", nodes[i].letters[0], nodes[i].letters[1], nodes[i].letters[2]);
|
||||
}
|
||||
|
||||
|
||||
int instructionidx = 0;
|
||||
uint64_t numjumps = 0;
|
||||
while (!all_zs(nodes, start_hashes, numas))
|
||||
{
|
||||
if (lrbuf[instructionidx] != 'L' && lrbuf[instructionidx] != 'R') instructionidx = 0;
|
||||
bool is_left = lrbuf[instructionidx] == 'L';
|
||||
instructionidx++;
|
||||
|
||||
for (i = 0; i < numas; i++)
|
||||
{
|
||||
int current_hash = start_hashes[i];
|
||||
start_hashes[i] = is_left ? nodes[current_hash].left : nodes[current_hash].right;
|
||||
}
|
||||
numjumps++;
|
||||
}
|
||||
|
||||
printf("Numjumps: %lu\n", numjumps);
|
||||
|
||||
return 0;
|
||||
}
|
||||
95
08/08.c
Normal file
95
08/08.c
Normal file
@@ -0,0 +1,95 @@
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#define DEFAULT_FILE "input.txt"
|
||||
#define STRBUF_LEN 300
|
||||
#define ISDIGIT(X) (X >= '0' && X <= '9')
|
||||
|
||||
#define HASHMAP_SIZE 17576 // 26 * 26 * 26
|
||||
|
||||
typedef struct _node
|
||||
{
|
||||
int left;
|
||||
int right;
|
||||
} node;
|
||||
|
||||
int hashnode(char *str)
|
||||
{
|
||||
bool err = false;
|
||||
|
||||
if (str[0] < 'A' || str[0] > 'Z') err = true;
|
||||
if (str[1] < 'A' || str[1] > 'Z') err = true;
|
||||
if (str[2] < 'A' || str[2] > 'Z') err = true;
|
||||
|
||||
if (err)
|
||||
{
|
||||
printf("Error in hashnode!");
|
||||
return -1;
|
||||
}
|
||||
|
||||
int first = str[0] - 'A';
|
||||
int second = str[1] - 'A';
|
||||
int third = str[2] - 'A';
|
||||
return (first * 26 * 26) + (second * 26) + third;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
// Get filename as an argument, if there is one
|
||||
char *path = (argc > 1) ? argv[1] : DEFAULT_FILE;
|
||||
|
||||
if (!path)
|
||||
{
|
||||
printf("Requires input file.\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
FILE *file = fopen(path, "r");
|
||||
char strbuf[STRBUF_LEN] = {0};
|
||||
char lrbuf[STRBUF_LEN] = {0};
|
||||
|
||||
if (!file)
|
||||
{
|
||||
printf("Could not find file.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Begin Challenge
|
||||
|
||||
node nodes[HASHMAP_SIZE];
|
||||
|
||||
fgets(lrbuf, STRBUF_LEN, file);
|
||||
fgets(strbuf, STRBUF_LEN, file);
|
||||
|
||||
while(fgets(strbuf, STRBUF_LEN, file))
|
||||
{
|
||||
node current;
|
||||
int hash = hashnode(strbuf);
|
||||
int left = hashnode(strbuf + 7);
|
||||
int right = hashnode(strbuf + 12);
|
||||
|
||||
nodes[hash].left = left;
|
||||
nodes[hash].right = right;
|
||||
printf("%s%d %d %d\n\n", strbuf, hash, left, right);
|
||||
}
|
||||
|
||||
int instructionidx = 0;
|
||||
int currenthash = 0;
|
||||
int numjumps = 0;
|
||||
|
||||
while(currenthash != HASHMAP_SIZE - 1)
|
||||
{
|
||||
printf("%d\n", currenthash);
|
||||
if (lrbuf[instructionidx] != 'L' && lrbuf[instructionidx] != 'R') instructionidx = 0;
|
||||
bool is_left = lrbuf[instructionidx] == 'L';
|
||||
instructionidx++;
|
||||
|
||||
currenthash = is_left ? nodes[currenthash].left : nodes[currenthash].right;
|
||||
numjumps++;
|
||||
}
|
||||
|
||||
printf("Numjumps: %d\n", numjumps);
|
||||
|
||||
return 0;
|
||||
}
|
||||
772
08/input.txt
Normal file
772
08/input.txt
Normal file
@@ -0,0 +1,772 @@
|
||||
LRRLRRRLLRRRLRRRLLRRLRRRLRRLRRLRLRLRLRLRLLRRRLRRLRLRRRLRRRLRLRRRLRLRRLRRRLRRRLRLLRRRLRLLLRLRRRLRLRRLRRLLLLRRLRRLRLRLRRLRLRRLRRRLRRRLRLRLRRLLLLRRLRLRRLLRRRLRLRLRLRRRLRLLLRLRLRRRLRLRRRLRRRLRRRLLRRLRRRLRRRLRRRLRRRLRLLRRRLRLRRRLRLRLRRRLRRLRRLLRRRLRRRLRRRLRLRLRLRRLRRRLRRLRLRLRLRRRR
|
||||
|
||||
TJF = (TXF, NGK)
|
||||
PDL = (TXD, FRT)
|
||||
MVB = (HLF, BMQ)
|
||||
LKG = (JTG, THR)
|
||||
MPN = (CKC, FKR)
|
||||
HHN = (HFV, FGD)
|
||||
TMM = (GJG, CCJ)
|
||||
HJD = (PHB, FJM)
|
||||
JNC = (NMB, SND)
|
||||
HHR = (NBB, HMD)
|
||||
KCC = (BHB, PDC)
|
||||
CKN = (FRD, TQK)
|
||||
NCG = (VSC, PTD)
|
||||
QFP = (BHQ, KFT)
|
||||
HRG = (VPV, HPP)
|
||||
XSK = (PCS, BDP)
|
||||
GJM = (QPQ, RQN)
|
||||
RKJ = (NTS, GLH)
|
||||
SKK = (QGR, RBB)
|
||||
HBK = (CBC, HKX)
|
||||
PNM = (HRG, KPJ)
|
||||
KQK = (DMK, HTJ)
|
||||
BBS = (KDC, FCX)
|
||||
PJF = (MVB, CQL)
|
||||
JPX = (PRD, LFG)
|
||||
KQT = (XJM, RGQ)
|
||||
RVJ = (LKS, QVN)
|
||||
TJD = (SCM, RBL)
|
||||
CCJ = (TQM, FQM)
|
||||
FJD = (VGF, FLP)
|
||||
LVG = (XHG, GBF)
|
||||
JJP = (LMP, XXF)
|
||||
FGD = (KQT, NDX)
|
||||
SKL = (THR, JTG)
|
||||
HBM = (GMS, HCM)
|
||||
NHL = (KLX, XKB)
|
||||
PPD = (PSR, FMS)
|
||||
TQV = (DHP, GLL)
|
||||
FVC = (SGH, KPC)
|
||||
MCA = (MRC, RMJ)
|
||||
FSL = (SKT, RQP)
|
||||
JCT = (XRJ, LTL)
|
||||
LMS = (TLP, CDP)
|
||||
XKB = (NXQ, QJH)
|
||||
KDQ = (CRC, SXC)
|
||||
KML = (RCL, SVM)
|
||||
DFP = (PSP, NPV)
|
||||
JTQ = (CGV, JNC)
|
||||
MSD = (VRQ, RLK)
|
||||
FRT = (BCK, XPX)
|
||||
NTK = (JTJ, NMP)
|
||||
QCR = (KFT, BHQ)
|
||||
HJK = (LQG, PSN)
|
||||
FJG = (NTR, TXB)
|
||||
NFL = (BDV, HHN)
|
||||
RPB = (CGN, PFT)
|
||||
PFT = (MFH, MVK)
|
||||
SKT = (CTB, CJL)
|
||||
DFR = (XJD, GLD)
|
||||
JJS = (KNM, MQQ)
|
||||
KDV = (LFX, BRQ)
|
||||
JSV = (MCD, VTB)
|
||||
BGH = (NTS, GLH)
|
||||
HVN = (BNH, LPH)
|
||||
NQT = (LXR, LXS)
|
||||
PGV = (JMR, NBV)
|
||||
VHC = (LXP, RVL)
|
||||
JGS = (TJS, NMV)
|
||||
NXQ = (CKN, SSJ)
|
||||
THR = (HNX, VBT)
|
||||
LQF = (MRC, RMJ)
|
||||
LBL = (QGG, PXV)
|
||||
VQD = (FTS, TKG)
|
||||
HCP = (CFF, FRJ)
|
||||
RCL = (GRJ, MVT)
|
||||
NKD = (HXR, JQX)
|
||||
PDV = (TJD, PFX)
|
||||
TTT = (GJG, CCJ)
|
||||
HFV = (KQT, NDX)
|
||||
SHB = (DHD, JNM)
|
||||
HPP = (BHM, PDV)
|
||||
DKM = (VVV, PKG)
|
||||
RSN = (QNN, PMC)
|
||||
RPN = (CKC, FKR)
|
||||
TBH = (NMR, HHG)
|
||||
FCF = (MRL, LBK)
|
||||
LLJ = (QGG, PXV)
|
||||
KFJ = (GPL, BFF)
|
||||
MSR = (SPF, XNP)
|
||||
XGX = (FDL, HHP)
|
||||
DQV = (PVX, PVX)
|
||||
BCK = (DLP, QPX)
|
||||
FBV = (LFN, XGX)
|
||||
CDH = (LJF, CMM)
|
||||
DPS = (QFL, JDG)
|
||||
MKX = (LCB, LSR)
|
||||
NHP = (JRX, PPJ)
|
||||
PVP = (HQD, MJL)
|
||||
RRK = (PXG, DPH)
|
||||
QQS = (DNF, TQF)
|
||||
QRD = (PGV, HRR)
|
||||
VKP = (QXL, MTX)
|
||||
XVF = (VQD, KFF)
|
||||
KHP = (KXJ, PCX)
|
||||
VTF = (DNJ, NHP)
|
||||
LMP = (RGD, RGD)
|
||||
VMT = (HTJ, DMK)
|
||||
VQJ = (VFG, QGX)
|
||||
PHK = (TFG, MJT)
|
||||
JFN = (HSF, PCL)
|
||||
GJF = (VQF, MHP)
|
||||
QFL = (TDN, CLJ)
|
||||
RKS = (KFJ, SCF)
|
||||
DVX = (MJJ, CKP)
|
||||
SFT = (DVX, CTX)
|
||||
PTX = (DJV, QCT)
|
||||
HTX = (DSN, NKD)
|
||||
RKM = (RJD, TVM)
|
||||
BBQ = (QBM, HVR)
|
||||
TQH = (KHB, NJP)
|
||||
HHG = (JFT, PDL)
|
||||
DHP = (CDH, BPQ)
|
||||
TCC = (LBR, NCG)
|
||||
SKC = (JDQ, MTC)
|
||||
DNH = (QGP, HLT)
|
||||
KMT = (KBS, JLK)
|
||||
TFR = (XKN, RTK)
|
||||
RRH = (XQL, HBL)
|
||||
HDL = (VDM, LSF)
|
||||
NXP = (BDT, CTG)
|
||||
PRB = (TQV, PMV)
|
||||
TXB = (PTK, TBH)
|
||||
DDP = (PJX, LMS)
|
||||
RXN = (PPS, BVB)
|
||||
CTG = (DFR, FVK)
|
||||
PDC = (PNM, CHG)
|
||||
LVD = (TQF, DNF)
|
||||
FDF = (BBQ, TPJ)
|
||||
HSF = (DMS, JSR)
|
||||
DNJ = (PPJ, JRX)
|
||||
BDD = (QFP, QCR)
|
||||
BHJ = (SDD, HCP)
|
||||
GMS = (GGJ, FXM)
|
||||
RFH = (LCP, KFG)
|
||||
MVT = (JHF, TJB)
|
||||
SCM = (RNC, FJQ)
|
||||
JLK = (HBX, CFQ)
|
||||
GKS = (DDC, JPB)
|
||||
BFF = (CVM, TJF)
|
||||
GSX = (TSD, FVC)
|
||||
JQR = (CPM, TDK)
|
||||
HTJ = (FCF, RXQ)
|
||||
NSN = (SHL, TKT)
|
||||
CMJ = (GNB, XDV)
|
||||
FCN = (SLP, XCF)
|
||||
FTG = (NDK, MPV)
|
||||
RMR = (TKQ, MSR)
|
||||
LXP = (VKP, CXG)
|
||||
FHT = (QQM, NHL)
|
||||
DPH = (SSB, DVS)
|
||||
TPJ = (QBM, HVR)
|
||||
GGD = (GPT, HNC)
|
||||
TGB = (FBH, TDS)
|
||||
KFX = (BNH, LPH)
|
||||
HMM = (QBV, JGS)
|
||||
SVS = (RFX, FDK)
|
||||
DQQ = (LPF, VLS)
|
||||
TJS = (BKQ, RKM)
|
||||
CLJ = (KRR, NXP)
|
||||
NQN = (HXC, GPP)
|
||||
BMC = (VTB, MCD)
|
||||
DCR = (MNJ, GST)
|
||||
MBB = (NMP, JTJ)
|
||||
MVH = (NTR, TXB)
|
||||
MCD = (HMM, JDJ)
|
||||
NHR = (BSP, PSL)
|
||||
DLG = (TCS, KKM)
|
||||
HPQ = (JDV, LSG)
|
||||
XKG = (LBR, NCG)
|
||||
FKD = (LGK, LBJ)
|
||||
KBS = (CFQ, HBX)
|
||||
QMC = (DNJ, NHP)
|
||||
CTR = (PDH, KBB)
|
||||
RFX = (XJS, QRF)
|
||||
DMZ = (LKT, RMR)
|
||||
GPL = (CVM, TJF)
|
||||
XTB = (CFK, LVG)
|
||||
DLJ = (QMS, QRD)
|
||||
DDC = (MGN, CFS)
|
||||
CGV = (NMB, SND)
|
||||
PTK = (HHG, NMR)
|
||||
PVX = (LQF, LQF)
|
||||
LSG = (RPB, MTQ)
|
||||
GCX = (SVS, BGB)
|
||||
SSJ = (FRD, TQK)
|
||||
VHS = (FTG, FFT)
|
||||
VBT = (FSB, SRG)
|
||||
HXR = (HDP, MGP)
|
||||
JSD = (DGR, FSC)
|
||||
HLT = (FHR, PGS)
|
||||
TDK = (VQJ, VVC)
|
||||
LBR = (VSC, PTD)
|
||||
MJL = (GRQ, NHT)
|
||||
KMS = (SKC, SKC)
|
||||
LXS = (NGM, MNF)
|
||||
QVG = (XKN, RTK)
|
||||
TSD = (SGH, KPC)
|
||||
RBB = (QBG, KDQ)
|
||||
FDL = (BVM, BVM)
|
||||
XPX = (DLP, QPX)
|
||||
HDP = (RKS, THC)
|
||||
PJP = (QJK, CQX)
|
||||
XCF = (DDB, KML)
|
||||
SDK = (KQS, CSP)
|
||||
XBH = (NNQ, VFD)
|
||||
LSF = (SKL, LKG)
|
||||
KBB = (LLJ, LBL)
|
||||
VXS = (KFG, LCP)
|
||||
GGJ = (PVM, CTR)
|
||||
LPH = (SFQ, KMQ)
|
||||
PSR = (LPL, XMN)
|
||||
TGS = (RJF, JKJ)
|
||||
NGX = (XQL, HBL)
|
||||
SPF = (BKL, TLD)
|
||||
FMH = (GQR, SSS)
|
||||
FJQ = (LKX, SHN)
|
||||
VNC = (PSR, FMS)
|
||||
JRH = (PDC, BHB)
|
||||
RTK = (DCR, SSG)
|
||||
MPV = (FBV, BMD)
|
||||
FQG = (RTN, XKK)
|
||||
DGK = (TGM, LGR)
|
||||
FFT = (MPV, NDK)
|
||||
NRG = (SKK, HLQ)
|
||||
LGH = (QQS, LVD)
|
||||
QGX = (JGH, BLX)
|
||||
FBF = (SKF, JGX)
|
||||
MJJ = (LTQ, PTX)
|
||||
CSK = (MPB, NRJ)
|
||||
VQK = (VHS, TPD)
|
||||
DVS = (FJG, MVH)
|
||||
PFX = (SCM, RBL)
|
||||
SQJ = (LKS, QVN)
|
||||
JHH = (JLK, KBS)
|
||||
NTL = (GLN, HBK)
|
||||
HQS = (VVV, PKG)
|
||||
JMR = (NDL, CMJ)
|
||||
XNM = (HJD, FCP)
|
||||
HDC = (HDL, SPK)
|
||||
RXQ = (MRL, LBK)
|
||||
BNH = (SFQ, KMQ)
|
||||
DGR = (TMM, TTT)
|
||||
RXH = (HLQ, SKK)
|
||||
FFC = (PPD, VNC)
|
||||
LFX = (PKR, LSB)
|
||||
XFN = (MVX, CJP)
|
||||
NDF = (XSK, TKJ)
|
||||
XKN = (SSG, DCR)
|
||||
SPK = (VDM, LSF)
|
||||
TQF = (BVR, VRK)
|
||||
MVK = (TQH, MQS)
|
||||
QTN = (FDF, FDF)
|
||||
TFG = (NTK, MBB)
|
||||
GRQ = (VBL, SBR)
|
||||
NVV = (DPH, PXG)
|
||||
MNF = (JRH, KCC)
|
||||
NHC = (RFH, VXS)
|
||||
LSR = (VCR, GCX)
|
||||
NDX = (XJM, RGQ)
|
||||
TKL = (BSP, BSP)
|
||||
KXJ = (VTF, QMC)
|
||||
XDV = (NNT, RSN)
|
||||
VFG = (JGH, BLX)
|
||||
FQP = (SKT, RQP)
|
||||
KNM = (KHP, CXK)
|
||||
PSL = (QTN, MRG)
|
||||
XHG = (FKD, MQB)
|
||||
FTS = (SJT, CFC)
|
||||
BKL = (HGM, FCQ)
|
||||
VHJ = (KPQ, JRB)
|
||||
GST = (JHH, KMT)
|
||||
VXM = (VVL, SKS)
|
||||
KDT = (DPS, CLC)
|
||||
NMP = (KDP, RXN)
|
||||
CFC = (TXR, MNP)
|
||||
DMS = (BGL, DNM)
|
||||
LPX = (FML, DNH)
|
||||
CGN = (MFH, MVK)
|
||||
PSS = (FMH, ZZZ)
|
||||
LBJ = (VRL, SDK)
|
||||
JJQ = (FSC, DGR)
|
||||
NRJ = (DTD, DFT)
|
||||
JRK = (XRF, XGV)
|
||||
VRK = (KFR, NBQ)
|
||||
CQX = (RVJ, SQJ)
|
||||
FJM = (RRN, SLJ)
|
||||
RGQ = (XRH, VGB)
|
||||
FVB = (LXS, LXR)
|
||||
BPQ = (CMM, LJF)
|
||||
GLT = (FSL, FQP)
|
||||
VRL = (CSP, KQS)
|
||||
GJC = (HQD, MJL)
|
||||
VBL = (XQH, KXL)
|
||||
JBV = (NHL, QQM)
|
||||
RVL = (CXG, VKP)
|
||||
QGG = (KQK, VMT)
|
||||
HKH = (MMV, JFN)
|
||||
XKK = (CTC, NQN)
|
||||
FBH = (QMH, TCH)
|
||||
CJL = (TSB, LBX)
|
||||
JFS = (BBS, RFN)
|
||||
VLS = (XXB, PKD)
|
||||
BVJ = (KDF, MRD)
|
||||
CMM = (CXQ, BDD)
|
||||
PSH = (VXS, RFH)
|
||||
VGF = (HTD, QNT)
|
||||
LKT = (TKQ, MSR)
|
||||
VTB = (HMM, JDJ)
|
||||
SVM = (GRJ, MVT)
|
||||
KCL = (JTQ, XKM)
|
||||
TKT = (TTM, SHB)
|
||||
PCB = (XRJ, LTL)
|
||||
PJS = (VVL, SKS)
|
||||
JHF = (SPD, GKK)
|
||||
GBN = (XCF, SLP)
|
||||
RTN = (CTC, NQN)
|
||||
PSN = (KQF, XFN)
|
||||
DLP = (HMK, XMG)
|
||||
HCM = (FXM, GGJ)
|
||||
BLP = (XHR, NFL)
|
||||
LQR = (MLN, DDH)
|
||||
CXL = (GMS, HCM)
|
||||
JSG = (PVX, SXQ)
|
||||
BHM = (PFX, TJD)
|
||||
KFT = (XNM, LFL)
|
||||
TLP = (RRH, NGX)
|
||||
CJP = (FPF, VQK)
|
||||
BVR = (KFR, NBQ)
|
||||
JTJ = (RXN, KDP)
|
||||
KPJ = (HPP, VPV)
|
||||
SKS = (TGD, BVJ)
|
||||
QVP = (SHL, TKT)
|
||||
LCB = (VCR, GCX)
|
||||
JTG = (HNX, VBT)
|
||||
XHR = (BDV, HHN)
|
||||
LFG = (FVB, NQT)
|
||||
KRR = (BDT, CTG)
|
||||
SFQ = (JSK, CRL)
|
||||
CXG = (QXL, MTX)
|
||||
PHB = (SLJ, RRN)
|
||||
FXD = (LLF, GJM)
|
||||
XRF = (JPX, JPX)
|
||||
JKD = (LFX, BRQ)
|
||||
DJP = (RFN, BBS)
|
||||
HMK = (DPK, MKX)
|
||||
GKK = (BHJ, GMB)
|
||||
FGR = (KFX, HVN)
|
||||
RLX = (FKG, GHL)
|
||||
TPD = (FFT, FTG)
|
||||
NGK = (GBQ, TGB)
|
||||
TVM = (HKP, NCT)
|
||||
HTB = (DLG, DRM)
|
||||
BHQ = (LFL, XNM)
|
||||
BLX = (VBS, LPX)
|
||||
HNC = (RXR, XSQ)
|
||||
SLZ = (TPJ, BBQ)
|
||||
GLL = (CDH, BPQ)
|
||||
LJF = (BDD, CXQ)
|
||||
VRF = (DVX, CTX)
|
||||
HQD = (GRQ, NHT)
|
||||
QBV = (NMV, TJS)
|
||||
MRD = (QSN, CSK)
|
||||
MQB = (LBJ, LGK)
|
||||
QMG = (FMF, GQJ)
|
||||
XJM = (VGB, XRH)
|
||||
TLD = (HGM, FCQ)
|
||||
VVV = (FGR, GDB)
|
||||
FMZ = (MTC, JDQ)
|
||||
PCS = (CNK, GKJ)
|
||||
FPF = (VHS, TPD)
|
||||
XNP = (BKL, TLD)
|
||||
BMD = (LFN, XGX)
|
||||
CPM = (VVC, VQJ)
|
||||
MNP = (JFR, TGS)
|
||||
AAA = (GQR, SSS)
|
||||
PQX = (NSN, QVP)
|
||||
BVB = (TKL, NHR)
|
||||
LMH = (SKP, JMK)
|
||||
KTB = (SPK, HDL)
|
||||
DFT = (RXH, NRG)
|
||||
JSK = (FFC, VXD)
|
||||
QBG = (SXC, CRC)
|
||||
JDJ = (QBV, JGS)
|
||||
NNT = (PMC, QNN)
|
||||
HLQ = (RBB, QGR)
|
||||
MTX = (CJC, HPQ)
|
||||
RGF = (TQV, PMV)
|
||||
FHR = (PQX, HMR)
|
||||
LBX = (BND, RVQ)
|
||||
KDC = (NNM, RCH)
|
||||
TGM = (KRJ, LSL)
|
||||
JFJ = (JPB, DDC)
|
||||
HMR = (QVP, NSN)
|
||||
NTS = (DQV, DQV)
|
||||
PVM = (PDH, KBB)
|
||||
LGK = (VRL, SDK)
|
||||
TPR = (HKH, RLP)
|
||||
GNB = (RSN, NNT)
|
||||
FMF = (DJP, JFS)
|
||||
LFL = (HJD, FCP)
|
||||
SLJ = (MDM, SJP)
|
||||
FKR = (HQQ, XXH)
|
||||
XXH = (PVP, GJC)
|
||||
DMK = (FCF, RXQ)
|
||||
HHP = (BVM, PSS)
|
||||
MHP = (XBH, SSX)
|
||||
MDM = (NTL, GMK)
|
||||
DDH = (FTV, NDF)
|
||||
LGR = (KRJ, LSL)
|
||||
RXR = (CKJ, GSX)
|
||||
CDP = (NGX, RRH)
|
||||
NBB = (NHC, PSH)
|
||||
FSB = (XLG, GJF)
|
||||
TJB = (SPD, GKK)
|
||||
LKX = (TLN, HTB)
|
||||
PCX = (VTF, QMC)
|
||||
HQP = (LMP, XXF)
|
||||
MJT = (NTK, MBB)
|
||||
TQT = (TMP, SLQ)
|
||||
HRN = (SKC, FMZ)
|
||||
TKQ = (XNP, SPF)
|
||||
MRL = (JCT, PCB)
|
||||
LTQ = (QCT, DJV)
|
||||
GQB = (JJQ, JSD)
|
||||
PXG = (SSB, DVS)
|
||||
BDP = (CNK, GKJ)
|
||||
XJS = (JMJ, QCX)
|
||||
PCP = (DSN, NKD)
|
||||
VRQ = (DGK, SML)
|
||||
LTL = (DQQ, PGF)
|
||||
VKS = (JMK, SKP)
|
||||
QRF = (JMJ, QCX)
|
||||
DCA = (JDQ, MTC)
|
||||
QCT = (FCN, GBN)
|
||||
VBS = (DNH, FML)
|
||||
SGH = (LMH, VKS)
|
||||
NDK = (FBV, BMD)
|
||||
JFR = (JKJ, RJF)
|
||||
VMX = (JSD, JJQ)
|
||||
QBM = (DFP, VBM)
|
||||
QSN = (NRJ, MPB)
|
||||
XRH = (JBV, FHT)
|
||||
KDF = (QSN, CSK)
|
||||
VDM = (LKG, SKL)
|
||||
TNZ = (RMJ, MRC)
|
||||
KRJ = (GKS, JFJ)
|
||||
VJC = (LVD, QQS)
|
||||
JDV = (MTQ, RPB)
|
||||
LRM = (HXH, PJP)
|
||||
FRD = (VHC, KMN)
|
||||
PKG = (FGR, GDB)
|
||||
XFR = (LMS, PJX)
|
||||
LBK = (PCB, JCT)
|
||||
SDD = (CFF, FRJ)
|
||||
BKQ = (RJD, TVM)
|
||||
NDL = (GNB, XDV)
|
||||
KMF = (MQQ, KNM)
|
||||
TPT = (KMS, HRN)
|
||||
NMB = (HTX, PCP)
|
||||
SML = (LGR, TGM)
|
||||
CRC = (TQT, XPD)
|
||||
HRR = (NBV, JMR)
|
||||
KMQ = (JSK, CRL)
|
||||
VCR = (SVS, BGB)
|
||||
NRR = (RMK, XVF)
|
||||
PPS = (TKL, NHR)
|
||||
CXK = (PCX, KXJ)
|
||||
FBB = (FKG, GHL)
|
||||
JKJ = (BTM, KCL)
|
||||
CQL = (BMQ, HLF)
|
||||
CTX = (MJJ, CKP)
|
||||
RLP = (JFN, MMV)
|
||||
HMD = (NHC, PSH)
|
||||
JDG = (CLJ, TDN)
|
||||
HTD = (PNJ, PNJ)
|
||||
CFS = (NVV, RRK)
|
||||
KPC = (LMH, VKS)
|
||||
TCH = (JFL, GGD)
|
||||
GBQ = (FBH, TDS)
|
||||
PCL = (DMS, JSR)
|
||||
LTD = (GQJ, FMF)
|
||||
LGA = (BBQ, TPJ)
|
||||
TMP = (KDV, JKD)
|
||||
QGR = (QBG, KDQ)
|
||||
MRG = (FDF, SLZ)
|
||||
CRL = (FFC, VXD)
|
||||
VQF = (SSX, XBH)
|
||||
CKJ = (FVC, TSD)
|
||||
CSP = (LGH, VJC)
|
||||
RQN = (XFS, FQG)
|
||||
TDS = (TCH, QMH)
|
||||
CKP = (PTX, LTQ)
|
||||
BGB = (RFX, FDK)
|
||||
PPJ = (BLP, TXG)
|
||||
JFT = (FRT, TXD)
|
||||
QNT = (PNJ, TPT)
|
||||
XQH = (MVL, FKQ)
|
||||
DRM = (TCS, KKM)
|
||||
HBL = (DDQ, BTN)
|
||||
RMJ = (MJH, DLJ)
|
||||
PXV = (KQK, VMT)
|
||||
SLP = (DDB, KML)
|
||||
GBF = (MQB, FKD)
|
||||
FVG = (JRB, KPQ)
|
||||
DDQ = (JPR, FJD)
|
||||
CFQ = (FBF, GCN)
|
||||
QQM = (KLX, XKB)
|
||||
CFK = (XHG, GBF)
|
||||
VVC = (VFG, QGX)
|
||||
PGF = (LPF, VLS)
|
||||
KLX = (NXQ, QJH)
|
||||
QGP = (FHR, PGS)
|
||||
FLP = (HTD, QNT)
|
||||
NLA = (PRD, LFG)
|
||||
HKP = (TCC, XKG)
|
||||
KHB = (TFR, QVG)
|
||||
VBM = (NPV, PSP)
|
||||
FCX = (NNM, RCH)
|
||||
MTC = (QCH, TPR)
|
||||
FQS = (CFK, LVG)
|
||||
FML = (HLT, QGP)
|
||||
PRD = (FVB, NQT)
|
||||
DHD = (QXM, LQR)
|
||||
HVR = (VBM, DFP)
|
||||
XMG = (MKX, DPK)
|
||||
SPD = (BHJ, GMB)
|
||||
MVL = (DDP, XFR)
|
||||
BSP = (QTN, QTN)
|
||||
PTD = (XTB, FQS)
|
||||
QMS = (HRR, PGV)
|
||||
SSS = (VRF, SFT)
|
||||
GKQ = (NHK, DMZ)
|
||||
SSB = (FJG, MVH)
|
||||
DPK = (LCB, LSR)
|
||||
JFL = (HNC, GPT)
|
||||
DNM = (JQR, MNV)
|
||||
NHK = (RMR, LKT)
|
||||
KMN = (LXP, RVL)
|
||||
GLH = (DQV, JSG)
|
||||
KPQ = (HQS, DKM)
|
||||
DJV = (GBN, FCN)
|
||||
XXF = (RGD, FRV)
|
||||
NCT = (XKG, TCC)
|
||||
FRQ = (GLT, MXS)
|
||||
DSN = (JQX, HXR)
|
||||
NBV = (CMJ, NDL)
|
||||
TLN = (DLG, DRM)
|
||||
FCP = (FJM, PHB)
|
||||
SHN = (TLN, HTB)
|
||||
GKJ = (PJF, QRL)
|
||||
TKG = (SJT, CFC)
|
||||
QJK = (RVJ, SQJ)
|
||||
JQX = (HDP, MGP)
|
||||
HXC = (VMX, GQB)
|
||||
LLF = (QPQ, RQN)
|
||||
TXD = (BCK, XPX)
|
||||
RGD = (BBT, BBT)
|
||||
MPB = (DFT, DTD)
|
||||
LXR = (NGM, MNF)
|
||||
FCQ = (KMF, JJS)
|
||||
PQQ = (LQG, PSN)
|
||||
TQK = (KMN, VHC)
|
||||
CVM = (NGK, TXF)
|
||||
NNQ = (FRQ, LJV)
|
||||
PJX = (TLP, CDP)
|
||||
TTM = (JNM, DHD)
|
||||
JPR = (VGF, FLP)
|
||||
BDV = (HFV, FGD)
|
||||
PMV = (GLL, DHP)
|
||||
NBQ = (FLX, JRK)
|
||||
BGL = (MNV, JQR)
|
||||
PDH = (LBL, LLJ)
|
||||
SLQ = (KDV, JKD)
|
||||
NMV = (BKQ, RKM)
|
||||
KFF = (FTS, TKG)
|
||||
XFS = (RTN, XKK)
|
||||
RJD = (NCT, HKP)
|
||||
DDB = (SVM, RCL)
|
||||
MMV = (HSF, PCL)
|
||||
JDQ = (TPR, QCH)
|
||||
NHT = (SBR, VBL)
|
||||
CFF = (MXL, MGT)
|
||||
KXL = (FKQ, MVL)
|
||||
GLD = (PJS, VXM)
|
||||
DXL = (XVF, RMK)
|
||||
MXS = (FSL, FQP)
|
||||
HGM = (KMF, JJS)
|
||||
PMC = (VLH, FXD)
|
||||
QCH = (RLP, HKH)
|
||||
SHL = (SHB, TTM)
|
||||
FSC = (TTT, TMM)
|
||||
QMH = (JFL, GGD)
|
||||
FKG = (NRR, DXL)
|
||||
SKP = (PHK, BHX)
|
||||
QXL = (HPQ, CJC)
|
||||
HBX = (FBF, GCN)
|
||||
VGB = (JBV, FHT)
|
||||
VLH = (LLF, GJM)
|
||||
MFH = (TQH, MQS)
|
||||
RNC = (SHN, LKX)
|
||||
SJT = (TXR, MNP)
|
||||
LKS = (RKJ, BGH)
|
||||
SXQ = (LQF, TNZ)
|
||||
RLK = (DGK, SML)
|
||||
RRN = (SJP, MDM)
|
||||
XGV = (JPX, VNZ)
|
||||
SMR = (RLX, FBB)
|
||||
JMJ = (BNT, LRM)
|
||||
BRQ = (PKR, LSB)
|
||||
JRB = (DKM, HQS)
|
||||
QRL = (CQL, MVB)
|
||||
MQS = (NJP, KHB)
|
||||
PGS = (HMR, PQX)
|
||||
RFN = (KDC, FCX)
|
||||
GPP = (GQB, VMX)
|
||||
JSR = (BGL, DNM)
|
||||
KKM = (BMC, JSV)
|
||||
JMK = (BHX, PHK)
|
||||
VFD = (FRQ, LJV)
|
||||
BVM = (FMH, FMH)
|
||||
BHX = (MJT, TFG)
|
||||
CJC = (LSG, JDV)
|
||||
SSG = (MNJ, GST)
|
||||
HNX = (FSB, SRG)
|
||||
KFG = (PQQ, HJK)
|
||||
BTM = (JTQ, XKM)
|
||||
FTV = (XSK, TKJ)
|
||||
SRG = (XLG, GJF)
|
||||
FMS = (XMN, LPL)
|
||||
FVK = (XJD, GLD)
|
||||
SCF = (GPL, BFF)
|
||||
FDK = (QRF, XJS)
|
||||
RVQ = (VHV, SMR)
|
||||
CBC = (RPN, MPN)
|
||||
RBL = (RNC, FJQ)
|
||||
VNZ = (LFG, PRD)
|
||||
KFR = (FLX, FLX)
|
||||
BTN = (JPR, FJD)
|
||||
VPA = (RMR, LKT)
|
||||
BNT = (HXH, PJP)
|
||||
SJP = (GMK, NTL)
|
||||
VVL = (BVJ, TGD)
|
||||
MRC = (MJH, DLJ)
|
||||
NMR = (PDL, JFT)
|
||||
GLN = (HKX, CBC)
|
||||
LPF = (XXB, PKD)
|
||||
GQJ = (DJP, JFS)
|
||||
GRJ = (JHF, TJB)
|
||||
LFN = (FDL, FDL)
|
||||
XKM = (CGV, JNC)
|
||||
RMK = (KFF, VQD)
|
||||
VDC = (DPS, CLC)
|
||||
PSP = (KTB, HDC)
|
||||
GJG = (FQM, TQM)
|
||||
XMN = (JJP, HQP)
|
||||
GCN = (JGX, SKF)
|
||||
CHG = (KPJ, HRG)
|
||||
KDP = (PPS, BVB)
|
||||
GMK = (GLN, HBK)
|
||||
BND = (VHV, SMR)
|
||||
XXB = (VHJ, FVG)
|
||||
VHV = (FBB, RLX)
|
||||
PNJ = (KMS, KMS)
|
||||
SND = (PCP, HTX)
|
||||
QVN = (RKJ, BGH)
|
||||
QHP = (HMD, NBB)
|
||||
CTC = (HXC, GPP)
|
||||
CTB = (LBX, TSB)
|
||||
CLC = (QFL, JDG)
|
||||
KQS = (VJC, LGH)
|
||||
PKD = (VHJ, FVG)
|
||||
TDN = (KRR, NXP)
|
||||
SNH = (RLK, VRQ)
|
||||
GQR = (SFT, VRF)
|
||||
FKQ = (DDP, XFR)
|
||||
XSQ = (GSX, CKJ)
|
||||
BHB = (CHG, PNM)
|
||||
SBR = (KXL, XQH)
|
||||
CKC = (HQQ, XXH)
|
||||
GDB = (KFX, HVN)
|
||||
GMB = (SDD, HCP)
|
||||
MTQ = (CGN, PFT)
|
||||
GPT = (XSQ, RXR)
|
||||
LCP = (HJK, PQQ)
|
||||
LPL = (JJP, HQP)
|
||||
MLN = (FTV, NDF)
|
||||
BMQ = (QMG, LTD)
|
||||
FRJ = (MGT, MXL)
|
||||
HQQ = (GJC, PVP)
|
||||
JNM = (LQR, QXM)
|
||||
TKJ = (BDP, PCS)
|
||||
SKF = (HBM, CXL)
|
||||
NNM = (RGF, PRB)
|
||||
MNV = (CPM, TDK)
|
||||
CXQ = (QCR, QFP)
|
||||
MGP = (THC, RKS)
|
||||
HLF = (QMG, LTD)
|
||||
TQM = (SNH, MSD)
|
||||
MVX = (VQK, FPF)
|
||||
JPB = (CFS, MGN)
|
||||
NJP = (TFR, QVG)
|
||||
TXF = (GBQ, TGB)
|
||||
BBT = (NHK, NHK)
|
||||
LSL = (GKS, JFJ)
|
||||
HGL = (VDC, KDT)
|
||||
THC = (SCF, KFJ)
|
||||
TXR = (TGS, JFR)
|
||||
XJD = (VXM, PJS)
|
||||
QPX = (XMG, HMK)
|
||||
LSB = (HHR, QHP)
|
||||
SSX = (NNQ, VFD)
|
||||
CNK = (PJF, QRL)
|
||||
SXC = (XPD, TQT)
|
||||
JGH = (LPX, VBS)
|
||||
QNN = (FXD, VLH)
|
||||
XPD = (SLQ, TMP)
|
||||
NGM = (KCC, JRH)
|
||||
XLG = (MHP, VQF)
|
||||
PKR = (HHR, QHP)
|
||||
MNJ = (KMT, JHH)
|
||||
FLX = (XRF, XRF)
|
||||
FQM = (MSD, SNH)
|
||||
MXL = (HGL, SRC)
|
||||
MJH = (QRD, QMS)
|
||||
DTD = (NRG, RXH)
|
||||
VSC = (XTB, FQS)
|
||||
FXM = (CTR, PVM)
|
||||
MGN = (RRK, NVV)
|
||||
RCH = (PRB, RGF)
|
||||
QXM = (DDH, MLN)
|
||||
HKX = (RPN, MPN)
|
||||
LQG = (XFN, KQF)
|
||||
KQF = (MVX, CJP)
|
||||
VPV = (BHM, PDV)
|
||||
VXD = (VNC, PPD)
|
||||
ZZZ = (SSS, GQR)
|
||||
QCX = (BNT, LRM)
|
||||
TSB = (BND, RVQ)
|
||||
LJV = (GLT, MXS)
|
||||
XQL = (BTN, DDQ)
|
||||
XRJ = (DQQ, PGF)
|
||||
MQQ = (KHP, CXK)
|
||||
NTR = (PTK, TBH)
|
||||
TCS = (JSV, BMC)
|
||||
MGT = (SRC, HGL)
|
||||
TXG = (XHR, NFL)
|
||||
JGX = (CXL, HBM)
|
||||
DNF = (BVR, VRK)
|
||||
SRC = (VDC, KDT)
|
||||
RJF = (BTM, KCL)
|
||||
NPV = (KTB, HDC)
|
||||
QJH = (CKN, SSJ)
|
||||
FRV = (BBT, GKQ)
|
||||
QPQ = (XFS, FQG)
|
||||
BDT = (DFR, FVK)
|
||||
RQP = (CJL, CTB)
|
||||
JRX = (BLP, TXG)
|
||||
GHL = (DXL, NRR)
|
||||
TGD = (MRD, KDF)
|
||||
HXH = (CQX, QJK)
|
||||
9
08/input2.txt
Normal file
9
08/input2.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
RL
|
||||
|
||||
AAA = (BBB, CCC)
|
||||
BBB = (DDD, EEE)
|
||||
CCC = (ZZZ, GGG)
|
||||
DDD = (DDD, DDD)
|
||||
EEE = (EEE, EEE)
|
||||
GGG = (GGG, GGG)
|
||||
ZZZ = (ZZZ, ZZZ)
|
||||
5
08/input3.txt
Normal file
5
08/input3.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
LLR
|
||||
|
||||
AAA = (BBB, BBB)
|
||||
BBB = (AAA, ZZZ)
|
||||
ZZZ = (ZZZ, ZZZ)
|
||||
10
08/input4.txt
Normal file
10
08/input4.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
LR
|
||||
|
||||
CCA = (AAB, XXX)
|
||||
AAB = (XXX, AAZ)
|
||||
AAZ = (AAB, XXX)
|
||||
BBA = (BBB, XXX)
|
||||
BBB = (BBC, BBC)
|
||||
BBC = (BBZ, BBZ)
|
||||
BBZ = (BBB, BBB)
|
||||
XXX = (XXX, XXX)
|
||||
185
09/09.c
Normal file
185
09/09.c
Normal file
@@ -0,0 +1,185 @@
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#define DEFAULT_FILE "input.txt"
|
||||
#define STRBUF_LEN 300
|
||||
#define ISDIGIT(X) (X >= '0' && X <= '9')
|
||||
#define NUM_ARR_LEN 300
|
||||
#define NUM_DIFFS 300
|
||||
|
||||
#define REVERSE_ARR 1
|
||||
|
||||
|
||||
bool all_zeroes(int *num_arr, int len)
|
||||
{
|
||||
int i = 0;
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
if (num_arr[i]) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
int parse_num(char *str)
|
||||
{
|
||||
bool isnegative = false;
|
||||
if (*str == '-')
|
||||
{
|
||||
isnegative = true;
|
||||
str++;
|
||||
}
|
||||
uint64_t num = 0;
|
||||
while (ISDIGIT(*str))
|
||||
{
|
||||
num = (num * 10) + (*str - '0');
|
||||
str++;
|
||||
}
|
||||
return isnegative ? -num : num;
|
||||
}
|
||||
|
||||
void reverse_arr(int *num_arr, int len)
|
||||
{
|
||||
int i = 0;
|
||||
int temp;
|
||||
for (i = 0; i < (len / 2); i++)
|
||||
{
|
||||
temp = num_arr[i];
|
||||
num_arr[i] = num_arr[len - i - 1];
|
||||
num_arr[len - i - 1] = temp;
|
||||
}
|
||||
}
|
||||
|
||||
int parse_nums(char *str, int *num_arr)
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
while (*str != '\n')
|
||||
{
|
||||
if (*str == ' ') str++;
|
||||
num_arr[i] = parse_num(str);
|
||||
i++;
|
||||
while (ISDIGIT(*str) || *str == '-') str++;
|
||||
}
|
||||
|
||||
|
||||
#if (REVERSE_ARR)
|
||||
int k = 0;
|
||||
int temp;
|
||||
for (k = 0; k < (i / 2); k++)
|
||||
{
|
||||
temp = num_arr[k];
|
||||
num_arr[k] = num_arr[i - k - 1];
|
||||
num_arr[i - k - 1] = temp;
|
||||
}
|
||||
#endif
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
void print_arr(int *num_arr, int len)
|
||||
{
|
||||
int i = 0;
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
printf("%d ", num_arr[i]);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
void calc_diff(int num_arr_len, int num_arr[num_arr_len], int diff_arr[num_arr_len - 1])
|
||||
{
|
||||
int i = 0;
|
||||
for (i = 0; i < (num_arr_len - 1); i++)
|
||||
{
|
||||
diff_arr[i] = num_arr[i + 1] - num_arr[i];
|
||||
}
|
||||
}
|
||||
|
||||
int calc_all_diffs(int diffs_arr[NUM_DIFFS][NUM_ARR_LEN], int lens_arr[NUM_DIFFS])
|
||||
{
|
||||
int k = 0;
|
||||
while (!all_zeroes(diffs_arr[k], lens_arr[k]))
|
||||
{
|
||||
calc_diff(lens_arr[k], diffs_arr[k], diffs_arr[k + 1]);
|
||||
lens_arr[k + 1] = lens_arr[k] - 1;
|
||||
k++;
|
||||
}
|
||||
|
||||
memset(diffs_arr[k], 0, sizeof(int) * NUM_ARR_LEN);
|
||||
|
||||
return k;
|
||||
}
|
||||
|
||||
#define PREDICT_NEXT(num_arr, num_arr_len, diffs) (num_arr[num_arr_len - 1] + diffs[num_arr_len - 1])
|
||||
|
||||
int predict_next_val(int diffs_arr[NUM_DIFFS][NUM_ARR_LEN], int *lens_arr, int depth)
|
||||
{
|
||||
while (depth)
|
||||
{
|
||||
depth--;
|
||||
int len = lens_arr[depth];
|
||||
|
||||
int *current_arr = diffs_arr[depth];
|
||||
int *diff = diffs_arr[depth + 1];
|
||||
|
||||
int current_arr_last_val = current_arr[len - 1];
|
||||
int diff_last_val = diff[len - 1];
|
||||
|
||||
int next = current_arr_last_val + diff_last_val;
|
||||
diffs_arr[depth][len] = next;
|
||||
print_arr(diffs_arr[depth], lens_arr[depth] + 1);
|
||||
}
|
||||
return diffs_arr[0][lens_arr[0]];
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
// Get filename as an argument, if there is one
|
||||
char *path = (argc > 1) ? argv[1] : DEFAULT_FILE;
|
||||
|
||||
if (!path)
|
||||
{
|
||||
printf("Requires input file.\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
FILE *file = fopen(path, "r");
|
||||
char strbuf[STRBUF_LEN] = {0};
|
||||
|
||||
if (!file)
|
||||
{
|
||||
printf("Could not find file.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Begin challenge
|
||||
|
||||
// diffs_arr[0] is a single line of the puzzle input
|
||||
// diffs_arr[0][0] is the first int of the first line
|
||||
int diffs_arr[NUM_DIFFS][NUM_ARR_LEN];
|
||||
|
||||
// Length of each diff arr
|
||||
int lens_arr[NUM_DIFFS] = {0};
|
||||
|
||||
int i = 0;
|
||||
uint64_t sum = 0;
|
||||
|
||||
while (fgets(strbuf, STRBUF_LEN, file))
|
||||
{
|
||||
if (strbuf[0] == '\n') break;
|
||||
lens_arr[0] = parse_nums(strbuf, diffs_arr[0]);
|
||||
|
||||
int depth = calc_all_diffs(diffs_arr, lens_arr);
|
||||
|
||||
int next_val = predict_next_val(diffs_arr, lens_arr, depth);
|
||||
|
||||
sum += next_val;
|
||||
}
|
||||
|
||||
printf("Sum: %lu\n", sum);
|
||||
|
||||
return 0;
|
||||
}
|
||||
200
09/input.txt
Normal file
200
09/input.txt
Normal file
@@ -0,0 +1,200 @@
|
||||
20 27 37 68 149 321 638 1165 1983 3241 5344 9436 18430 38955 84735 182089 378446 755007 1444959 2658956 4719931
|
||||
4 27 79 177 347 630 1088 1811 2926 4609 7101 10729 15933 23300 33606 47867 67400 93895 129499 176913 239503
|
||||
-4 -7 0 27 90 214 433 798 1412 2529 4805 9906 21910 50370 116689 266897 596596 1298895 2755894 5713391 11616498
|
||||
-5 -4 5 30 83 173 302 472 711 1126 1991 3878 7839 15647 30104 55424 97699 165456 270313 427742 657947
|
||||
15 22 39 67 112 196 366 698 1293 2262 3697 5625 7942 10324 12112 12168 8699 -954 -20565 -55313 -112116
|
||||
17 21 20 14 13 42 150 428 1051 2390 5312 11943 27490 64328 150639 347692 782705 1708551 3607880 7368160 14566447
|
||||
3 3 14 53 138 287 515 832 1246 1781 2545 3957 7425 17167 44672 118854 307964 765351 1823752 4189940 9350701
|
||||
17 34 65 124 245 484 921 1670 2923 5098 9246 18017 37712 82293 180781 390506 820825 1676574 3340347 6532502 12625667
|
||||
16 22 38 85 205 474 1015 2011 3718 6478 10732 17033 26059 38626 55701 78415 108076 146182 194434 254749 329273
|
||||
27 34 32 28 35 67 137 258 455 822 1712 4243 11455 30681 78021 186257 418147 887818 1793976 3469902 6456747
|
||||
-5 -9 -17 -31 -57 -98 -134 -89 219 1164 3486 8664 19704 42763 90456 188572 389655 800117 1633181 3309339 6640985
|
||||
-6 -2 6 22 68 210 610 1614 3892 8665 18102 36079 69723 132632 251579 480262 926979 1809393 3561583 7041793 13934047
|
||||
22 32 47 74 132 268 583 1277 2734 5694 11603 23299 46291 91035 176832 338307 635930 1172784 2120867 3761756 6548610
|
||||
14 11 4 0 23 122 376 896 1824 3329 5600 8836 13233 18968 26180 34948 45266 57015 69932 83576 97291
|
||||
-7 -4 11 42 90 153 226 301 367 410 413 356 216 -33 -420 -977 -1739 -2744 -4033 -5650 -7642
|
||||
8 22 37 53 70 88 107 127 148 170 193 217 242 268 295 323 352 382 413 445 478
|
||||
8 15 33 68 126 213 335 498 708 971 1293 1680 2138 2673 3291 3998 4800 5703 6713 7836 9078
|
||||
10 19 25 39 88 224 547 1247 2671 5424 10518 19590 35219 61383 104110 172392 279448 444441 694775 1069121 1621346
|
||||
17 35 59 89 125 167 215 269 329 395 467 545 629 719 815 917 1025 1139 1259 1385 1517
|
||||
18 26 36 49 69 103 161 256 404 624 938 1371 1951 2709 3679 4898 6406 8246 10464 13109 16233
|
||||
15 15 16 24 51 123 296 690 1560 3446 7499 16197 34897 75110 161200 343676 724844 1507133 3082401 6194946 12238162
|
||||
3 2 18 80 232 548 1176 2436 5009 10267 20811 41326 79984 150935 279101 509802 928087 1696552 3126608 5807524 10831256
|
||||
19 48 86 133 202 324 562 1050 2087 4353 9399 20728 46064 101833 221471 469919 967540 1927762 3714504 6929680 12552949
|
||||
3 18 58 146 315 609 1092 1877 3193 5525 9902 18488 35775 70925 142247 285635 570519 1130520 2223550 4351174 8495811
|
||||
11 13 17 30 69 166 383 854 1884 4158 9159 19992 43016 91087 189942 390485 791705 1581963 3110809 6009806 11389639
|
||||
16 26 41 62 96 167 341 770 1757 3841 7898 15251 27779 48012 79196 125309 191006 281468 402127 558236 754250
|
||||
19 44 91 173 303 488 720 963 1150 1248 1540 3446 11535 38023 112311 300545 744743 1739374 3878135 8329581 17344593
|
||||
6 28 73 153 280 466 723 1063 1498 2040 2701 3493 4428 5518 6775 8211 9838 11668 13713 15985 18496
|
||||
-3 5 19 34 55 123 352 989 2535 6018 13612 29979 65014 139164 293304 606554 1227956 2432714 4722996 9011583 16962464
|
||||
25 38 65 132 289 619 1242 2314 4021 6566 10143 14886 20773 27455 33968 38272 36545 22142 -15891 -94880 -241319
|
||||
16 35 82 176 338 586 938 1441 2267 3967 8066 18336 43337 101244 228728 496991 1040394 2107115 4147882 7969376 14995196
|
||||
13 12 3 -22 -70 -132 -143 94 1040 3664 9939 23901 53904 117269 249461 521429 1071147 2159336 4266043 8256444 15664866
|
||||
12 28 41 51 64 105 252 703 1889 4646 10458 21781 42455 78207 137243 230921 374490 587872 896455 1331855 1932594
|
||||
4 10 26 76 197 432 824 1421 2315 3764 6487 12281 25193 53603 113760 235599 472106 914162 1713780 3120070 5534273
|
||||
12 13 27 66 151 322 646 1227 2237 4021 7393 14341 29496 62884 134661 282749 574696 1126211 2132153 3924766 7096019
|
||||
5 14 45 116 253 486 853 1427 2396 4265 8331 17747 39809 90691 204933 453955 981451 2069976 4264481 8598322 17000473
|
||||
6 17 49 118 244 455 793 1322 2139 3400 5399 8794 15207 28745 59709 133243 308500 718919 1652621 3705386 8059342
|
||||
5 13 21 29 37 45 53 61 69 77 85 93 101 109 117 125 133 141 149 157 165
|
||||
11 9 7 9 28 102 328 932 2407 5764 12956 27558 55820 108257 202030 364651 640475 1104197 1892757 3283933 5886380
|
||||
18 23 28 45 102 247 549 1101 2046 3674 6689 12858 26513 57943 130862 298300 675046 1500965 3259042 6885827 14130836
|
||||
6 9 26 79 195 401 717 1145 1652 2145 2436 2195 889 -2295 -8545 -19539 -37582 -65767 -108162 -170025 -258049
|
||||
7 18 30 48 84 159 301 547 971 1785 3603 8023 18767 43713 98233 210279 427579 827040 1525904 2693238 4558802
|
||||
13 34 82 185 392 781 1469 2625 4494 7461 12240 20404 35749 67534 137680 295916 650244 1425979 3076751 6488342 13346755
|
||||
10 16 32 77 177 381 802 1708 3700 8036 17198 35849 72377 141274 266713 488081 869443 1518170 2625875 4562765 8095270
|
||||
18 35 77 171 358 690 1233 2099 3550 6245 11736 23363 47775 97493 195413 383266 738390 1407635 2675155 5094127 9733640
|
||||
10 21 45 100 222 484 1028 2110 4158 7843 14163 24540 40930 65946 102994 156422 231682 335505 476089 663300 908886
|
||||
20 36 52 68 85 103 119 125 106 38 -114 -398 -877 -1631 -2759 -4381 -6640 -9704 -13768 -19056 -25823
|
||||
15 25 53 123 282 614 1255 2403 4329 7428 12411 20847 36462 68001 135317 282219 603580 1302299 2807472 6014465 12759931
|
||||
27 42 69 120 203 324 501 796 1371 2574 5061 9960 19083 35192 62325 106188 174619 278130 430533 649656 958155
|
||||
12 24 57 133 287 581 1125 2104 3816 6735 11626 19757 33277 55860 93754 157422 264020 441026 731415 1200869 1947619
|
||||
2 11 28 52 80 100 74 -99 -658 -2109 -5402 -12105 -24466 -45216 -77019 -121735 -180245 -254401 -352790 -498159 -717505
|
||||
-6 -14 -19 -15 -1 11 -19 -177 -590 -1339 -2177 -1833 3547 23781 81923 229823 581042 1379136 3135721 6901573 14782879
|
||||
1 -1 4 30 113 323 773 1619 3047 5250 8410 12717 18479 26404 38167 57412 91381 153409 266576 468864 820229
|
||||
14 33 68 130 240 437 803 1521 2993 6071 12508 25844 53168 108682 221008 448192 908116 1838649 3712952 7453106 14812604
|
||||
12 39 84 163 303 552 1001 1815 3273 5827 10207 17623 30146 51388 87646 149727 255730 435127 734558 1225835 2016737
|
||||
2 1 -2 4 37 115 255 492 937 1915 4278 10089 24036 56175 126933 275741 575228 1153605 2228718 4158266 7511879
|
||||
0 -5 -11 -18 -26 -35 -45 -56 -68 -81 -95 -110 -126 -143 -161 -180 -200 -221 -243 -266 -290
|
||||
14 35 64 97 138 224 469 1129 2700 6087 12926 26210 51489 99143 188679 356860 672998 1267279 2381956 4461119 8303016
|
||||
21 43 81 148 274 518 987 1869 3489 6401 11538 20459 35757 61719 105343 177791 296249 485915 781363 1225730 1864912
|
||||
10 12 28 67 136 240 382 563 782 1036 1320 1627 1948 2272 2586 2875 3122 3308 3412 3411 3280
|
||||
26 47 76 109 133 136 136 241 762 2414 6656 16240 36061 74425 144880 268786 478834 823761 1374548 2232431 3539101
|
||||
20 39 69 121 220 405 729 1259 2076 3275 4965 7269 10324 14281 19305 25575 33284 42639 53861 67185 82860
|
||||
5 -4 -16 -19 23 183 584 1412 2929 5486 9536 15647 24515 36977 54024 76814 106685 145168 194000 255137 330767
|
||||
10 22 45 71 102 172 372 888 2086 4727 10479 23027 50302 108739 231208 481692 982578 1965788 3869001 7516391 14455222
|
||||
-2 6 16 34 77 173 361 691 1224 2032 3198 4816 6991 9839 13487 18073 23746 30666 39004 48942 60673
|
||||
8 21 45 84 153 295 619 1367 3015 6410 12942 24747 44934 77826 129202 206524 319130 478371 697667 992454 1379991
|
||||
12 15 24 48 111 262 589 1245 2504 4879 9361 17910 34518 67605 135429 277944 581648 1229163 2593586 5410376 11078421
|
||||
21 44 92 172 300 513 894 1621 3060 5949 11782 23632 47913 98092 202343 418983 866943 1784698 3641988 7347492 14627346
|
||||
4 8 15 33 70 134 233 375 568 820 1139 1533 2010 2578 3245 4019 4908 5920 7063 8345 9774
|
||||
13 28 46 75 136 275 586 1245 2555 5002 9322 16579 28254 46345 73478 113029 169257 247448 354070 496939 685396
|
||||
8 16 21 20 20 66 291 995 2759 6600 14182 28140 52701 95100 168988 302497 556594 1065160 2119219 4337860 9004002
|
||||
24 35 46 57 68 79 90 101 112 123 134 145 156 167 178 189 200 211 222 233 244
|
||||
25 35 48 69 113 213 427 846 1602 2863 4788 7418 10530 13623 16493 21355 38263 96755 268312 706483 1714519
|
||||
17 25 40 59 72 74 94 244 791 2255 5536 12073 24038 44568 78038 130378 209437 325397 491240 723271 1041700
|
||||
8 27 52 77 107 180 405 1030 2573 6083 13647 29318 60695 121415 234781 438594 790906 1375767 2306978 3726231 5789631
|
||||
0 -4 -8 -11 -13 -15 -19 -28 -46 -78 -130 -209 -323 -481 -693 -970 -1324 -1768 -2316 -2983 -3785
|
||||
14 40 79 132 200 284 385 504 642 800 979 1180 1404 1652 1925 2224 2550 2904 3287 3700 4144
|
||||
3 13 49 127 267 505 928 1756 3502 7241 15016 30421 59469 112048 204697 366250 649321 1152977 2065819 3744979 6856771
|
||||
20 41 76 140 272 546 1082 2057 3716 6383 10472 16498 25088 36992 53094 74423 102164 137669 182468 238280 307024
|
||||
11 31 67 129 233 413 744 1378 2589 4813 8655 14817 23879 35839 49288 60062 59175 29795 -57021 -248167 -616291
|
||||
2 5 5 -2 -11 7 137 582 1780 4624 10881 24008 50759 104315 210218 417294 817358 1580611 3019953 5710186 10713041
|
||||
15 42 85 153 259 414 613 809 882 636 -98 -1107 -948 4760 26432 85729 223857 514214 1080987 2125697 3964145
|
||||
27 37 54 91 176 376 836 1843 3926 8008 15644 29419 53651 95655 167984 292281 505661 870903 1492178 2538579 4278362
|
||||
3 2 14 62 177 410 873 1829 3852 8082 16622 33196 64373 122073 228881 429180 811769 1554463 3010308 5872865 11493045
|
||||
-1 8 22 49 107 234 515 1131 2440 5118 10429 20785 40964 80806 161156 326760 673732 1407131 2960311 6240492 13130908
|
||||
13 37 73 132 247 495 1031 2134 4265 8137 14797 25720 42915 69043 107547 162794 240229 346541 489841 679852 928111
|
||||
3 9 35 91 182 305 440 533 479 133 -590 -1416 -1036 4215 22707 71418 182091 410553 850349 1652129 3050554
|
||||
5 14 41 109 257 545 1056 1900 3245 5429 9241 16494 31045 60442 118392 228243 427653 774576 1354625 2289771 3748201
|
||||
22 41 84 171 341 664 1249 2245 3835 6245 9852 15616 26362 50064 107549 249506 592292 1390265 3176508 7027153 15041771
|
||||
21 37 70 141 273 489 820 1345 2302 4324 8869 18946 40334 83728 168751 331726 640755 1224327 2323784 4386019 8221375
|
||||
11 29 52 84 150 311 677 1411 2716 4800 7835 12005 17960 28529 53725 123498 317373 828659 2095738 5057450 11628390
|
||||
-7 2 35 99 206 383 682 1190 2039 3416 5573 8837 13620 20429 29876 42688 59717 81950 110519 146711 191978
|
||||
27 41 55 69 83 97 111 125 139 153 167 181 195 209 223 237 251 265 279 293 307
|
||||
29 57 107 185 291 418 558 714 914 1217 1692 2343 2968 3045 2097 1973 14907 86797 357329 1203945 3567193
|
||||
18 39 70 118 194 315 523 937 1869 4062 9141 20400 44080 91349 181343 346006 638320 1147229 2025708 3543822 6187370
|
||||
9 13 17 21 25 29 33 37 41 45 49 53 57 61 65 69 73 77 81 85 89
|
||||
25 49 91 157 267 474 902 1817 3745 7651 15193 29065 53443 94548 161340 266357 426713 665269 1011991 1505509 2194891
|
||||
19 42 74 115 165 224 292 369 455 550 654 767 889 1020 1160 1309 1467 1634 1810 1995 2189
|
||||
-6 3 35 116 286 599 1123 1940 3146 4851 7179 10268 14270 19351 25691 33484 42938 54275 67731 83556 102014
|
||||
17 43 82 142 251 482 1004 2177 4723 10038 20783 42032 83501 163816 318601 615847 1185556 2278005 4379809 8445840 16359366
|
||||
18 30 49 81 147 309 711 1640 3616 7521 14771 27518 48837 82802 134281 208179 307726 431240 566589 682327 714183
|
||||
26 50 79 121 192 322 573 1070 2046 3902 7283 13171 22996 38766 63217 99984 153794 230682 338231 485837 685000
|
||||
5 15 44 117 281 615 1251 2418 4536 8424 15754 30007 58431 115999 233360 472667 958563 1937393 3887116 7715069 15102849
|
||||
0 11 25 35 27 -22 -135 -305 -434 -231 941 4279 11825 26832 54221 101139 177628 297415 478833 745883 1129447
|
||||
2 4 2 -14 -58 -144 -282 -465 -611 -382 1255 6932 22543 60062 142029 308349 626196 1203976 2210480 3900550 6648788
|
||||
12 11 25 67 144 259 415 618 880 1235 1821 3185 7204 19510 55281 152063 396436 976543 2280697 5074627 10807800
|
||||
28 51 81 117 172 285 533 1057 2140 4416 9366 20405 45139 99858 218155 466901 974912 1982857 3927731 7582149 14278570
|
||||
14 33 67 125 240 494 1059 2269 4754 9703 19392 38232 74795 145649 282580 546333 1053219 2027442 3904890 7539252 14609627
|
||||
-5 2 16 32 43 40 12 -54 -173 -362 -640 -1028 -1549 -2228 -3092 -4170 -5493 -7094 -9008 -11272 -13925
|
||||
-2 -5 -8 -11 -14 -17 -20 -23 -26 -29 -32 -35 -38 -41 -44 -47 -50 -53 -56 -59 -62
|
||||
10 22 48 86 137 220 398 817 1772 3839 8150 16939 34551 69183 135716 260100 485870 883500 1563444 2693868 4524245
|
||||
13 34 66 102 135 174 268 530 1152 2416 4758 9067 17654 36798 82618 193475 454551 1044238 2318290 4957436 10218785
|
||||
17 24 25 18 1 -28 -71 -130 -207 -304 -423 -566 -735 -932 -1159 -1418 -1711 -2040 -2407 -2814 -3263
|
||||
8 22 52 105 204 397 766 1441 2624 4628 7936 13285 21780 35043 55402 86125 131704 198194 293612 428401 615964
|
||||
7 11 22 52 112 218 415 825 1733 3747 8113 17360 36649 76602 159139 329145 676839 1378707 2768852 5457396 10517442
|
||||
9 4 9 42 120 256 459 745 1168 1890 3341 6587 14155 31834 72552 164687 369870 821090 1804116 3931014 8508337
|
||||
10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110
|
||||
24 48 82 136 234 413 725 1262 2251 4319 9119 20651 47835 109262 241720 515417 1061543 2123375 4153165 7998055 15256497
|
||||
23 35 61 124 255 489 857 1374 2023 2735 3365 3664 3247 1557 -2175 -8974 -20169 -37445 -62899 -99100 -149153
|
||||
22 41 78 146 264 456 750 1177 1770 2563 3590 4884 6476 8394 10662 13299 16318 19725 23518 27686 32208
|
||||
7 15 31 52 84 162 375 904 2092 4576 9522 19015 36667 68517 124308 219237 376285 629245 1026577 1636230 2551582
|
||||
-3 5 28 68 129 238 491 1134 2689 6135 13154 26452 50165 90360 155641 257870 413013 642121 972456 1438772 2084761
|
||||
23 34 45 50 39 7 -20 66 552 2097 6131 15692 37168 83837 182833 388387 806166 1636709 3251293 6323508 12060892
|
||||
16 36 85 184 359 643 1097 1875 3378 6569 13554 28588 59785 122099 242811 472219 905244 1725550 3294687 6328080 12232483
|
||||
11 8 1 3 50 210 595 1384 2876 5610 10609 19816 36774 67533 121610 212538 357061 571296 861109 1202445 1505302
|
||||
13 23 39 75 149 283 503 839 1325 1999 2903 4083 5589 7475 9799 12623 16013 20039 24775 30299 36693
|
||||
12 24 47 83 140 234 401 745 1566 3647 8857 21386 50220 113956 249835 530055 1090204 2177338 4229335 8003477 14781872
|
||||
13 27 57 124 261 521 1003 1900 3573 6660 12243 22128 39369 69355 122233 218478 401668 767172 1524740 3130947 6561240
|
||||
12 6 -2 -6 13 106 394 1146 2939 6981 15748 34216 72219 148943 301453 600718 1181242 2294672 4404366 8347814 15608221
|
||||
-4 5 23 55 117 242 482 911 1645 2922 5354 10610 23065 53448 126448 296066 676292 1502685 3257185 6922817 14503427
|
||||
6 24 56 111 205 374 701 1358 2662 5145 9642 17408 30285 50953 83315 133085 208670 322462 492684 745965 1120853
|
||||
-1 -8 -18 -27 -19 44 232 657 1483 2936 5314 8997 14457 22268 33116 47809 67287 92632 125078 166021 217029
|
||||
19 32 47 83 169 338 620 1033 1583 2309 3457 5954 12506 29912 73667 176845 407154 900237 1926642 4030356 8319866
|
||||
0 -1 2 24 87 220 459 847 1434 2277 3440 4994 7017 9594 12817 16785 21604 27387 34254 42332 51755
|
||||
22 42 76 134 238 442 860 1694 3261 6052 10930 19703 36514 70804 143056 295119 607567 1227060 2406625 4560440 8330877
|
||||
6 19 38 67 106 146 161 93 -163 -743 -1699 -2667 -2137 3932 24498 77271 194560 431823 879752 1680879 3051856
|
||||
6 1 -11 -32 -64 -109 -169 -246 -342 -459 -599 -764 -956 -1177 -1429 -1714 -2034 -2391 -2787 -3224 -3704
|
||||
6 24 62 135 268 511 963 1805 3351 6153 11264 20917 40203 80992 170652 370646 814772 1785142 3858174 8175991 16934838
|
||||
9 14 15 23 65 183 434 895 1677 2952 4997 8259 13445 21641 34464 54251 84289 129090 194715 289151 422745
|
||||
12 12 17 32 52 59 30 -23 62 857 3851 12347 32954 77999 169461 345698 673819 1274145 2371036 4400773 8240255
|
||||
8 26 59 123 254 522 1045 2003 3652 6338 10511 16739 25722 38306 55497 78475 108608 147466 196835 258731 335414
|
||||
14 25 37 52 72 99 135 182 242 317 409 520 652 807 987 1194 1430 1697 1997 2332 2704
|
||||
8 17 51 130 280 533 927 1499 2259 3128 3818 3627 1117 -6362 -23344 -57162 -119158 -226245 -402883 -683536 -1115682
|
||||
5 0 -5 -10 -15 -20 -25 -30 -35 -40 -45 -50 -55 -60 -65 -70 -75 -80 -85 -90 -95
|
||||
16 24 53 125 268 523 960 1703 2964 5086 8595 14261 23168 36793 57094 86607 128552 186948 266737 373917 515684
|
||||
0 11 39 86 152 238 358 570 1047 2231 5152 12067 27729 61946 134874 288184 608787 1279027 2681776 5617806 11749991
|
||||
2 17 38 63 98 171 357 817 1854 3989 8060 15347 27726 47855 79395 127269 197962 299865 443666 642791 913898
|
||||
-3 -1 22 91 254 601 1296 2643 5230 10236 20061 39578 78560 156283 310062 610697 1189695 2285953 4323660 8038897 14680254
|
||||
16 26 41 61 83 109 163 330 843 2255 5742 13590 29924 61740 120302 222965 395482 674848 1112727 1779499 2768953
|
||||
-3 -1 1 2 2 8 55 245 806 2188 5258 11743 25205 53010 109960 224508 448951 876381 1671371 3132812 5835184
|
||||
8 23 42 65 92 123 158 197 240 287 338 393 452 515 582 653 728 807 890 977 1068
|
||||
12 26 55 121 262 542 1076 2085 4016 7788 15255 30014 58754 113512 215625 403112 745125 1370694 2525600 4683759 8764859
|
||||
16 22 39 86 202 470 1061 2306 4804 9574 18259 33390 58718 99622 163601 260858 404984 613750 910015 1322758 1888242
|
||||
3 -1 -4 2 45 194 600 1565 3652 7877 16093 31820 62061 121198 239117 477704 963620 1952404 3952501 7963359 15929276
|
||||
18 32 66 126 217 358 614 1165 2456 5518 12633 28650 63456 136378 283656 570613 1110810 2095404 3837272 6836446 11876343
|
||||
9 4 10 55 189 499 1129 2317 4491 8520 16301 31984 64303 130730 264639 527768 1033060 1989936 3800601 7273095 14095648
|
||||
8 8 19 52 118 228 393 624 932 1328 1823 2428 3154 4012 5013 6168 7488 8984 10667 12548 14638
|
||||
11 12 21 58 163 407 903 1817 3379 5894 9753 15444 23563 34825 50075 70299 96635 130384 173021 226206 291795
|
||||
25 35 56 114 253 554 1184 2490 5153 10417 20408 38558 70149 122992 208256 341462 543657 842783 1275256 1887770 2739341
|
||||
0 4 26 74 165 336 652 1219 2232 4136 8065 16867 37252 83972 187560 408192 859964 1752700 3462904 6652432 12463947
|
||||
16 24 32 42 56 76 104 142 192 256 336 434 552 692 856 1046 1264 1512 1792 2106 2456
|
||||
20 36 55 87 157 324 720 1626 3617 7839 16546 34151 69274 138670 274601 538351 1044434 2002994 3792481 7081643 13030179
|
||||
16 36 68 128 238 422 702 1095 1612 2260 3048 3998 5162 6646 8642 11469 15624 21844 31180 45084 65510
|
||||
1 2 7 29 95 252 583 1238 2484 4793 9027 16854 31651 60333 116818 228284 446268 866729 1668144 3188068 6083156
|
||||
7 8 19 58 156 379 880 2003 4465 9640 19971 39569 75172 137917 246978 437345 776462 1399243 2580166 4878067 9419163
|
||||
4 11 18 25 32 39 46 53 60 67 74 81 88 95 102 109 116 123 130 137 144
|
||||
25 38 47 51 59 105 282 806 2131 5169 11747 25589 54389 113996 236430 484466 976949 1930936 3729311 7025807 12903527
|
||||
7 13 35 93 226 499 1009 1900 3409 5984 10551 19077 35710 69027 136373 272063 542547 1073795 2099547 4044233 7662010
|
||||
12 27 42 57 72 87 102 117 132 147 162 177 192 207 222 237 252 267 282 297 312
|
||||
17 32 73 153 282 478 795 1376 2547 4975 9915 19564 37520 69307 122869 208853 340389 531930 796533 1140739 1555942
|
||||
-4 1 19 55 122 263 586 1324 2957 6474 13923 29516 61757 127404 258670 516101 1011346 1947023 3685771 6868325 12612372
|
||||
10 5 -3 -17 -32 -15 125 579 1690 4010 8372 16059 29366 53376 100926 205112 448344 1025855 2378223 5458349 12255366
|
||||
11 6 11 47 160 433 1003 2089 4031 7333 12704 21120 34025 54019 86869 146639 267527 529204 1107981 2375353 5080378
|
||||
4 15 30 50 92 216 566 1425 3284 6925 13518 24732 42860 70958 112998 174035 260388 379835 541822 757686 1040892
|
||||
11 35 84 184 381 754 1441 2687 4927 8921 15962 28182 48985 83640 140071 229885 369683 582703 900848 1367156 2038773
|
||||
23 39 68 126 244 489 1001 2052 4148 8225 16048 31040 60018 116838 230015 458458 923363 1871418 3797030 7672793 15373262
|
||||
9 35 73 123 185 259 345 443 553 675 809 955 1113 1283 1465 1659 1865 2083 2313 2555 2809
|
||||
7 3 -6 -20 -37 -39 45 417 1569 4597 11795 27732 61143 128192 258080 502714 953419 1769707 3228184 5804032 10303323
|
||||
-8 1 21 47 85 173 410 991 2240 4632 8812 15673 26671 44764 76701 137899 261880 517251 1036559 2063107 4024049
|
||||
11 17 25 34 47 76 156 370 888 2028 4353 8830 17114 32132 59465 110919 214006 436724 949858 2176195 5130226
|
||||
5 13 28 56 112 234 518 1196 2787 6356 13918 29023 57554 108763 196560 341057 570353 922527 1447784 2210674 3292276
|
||||
8 23 62 139 266 452 719 1145 1947 3638 7355 15599 33920 74651 164910 363262 793598 1712537 3640556 7611047 15631418
|
||||
13 33 74 157 309 557 919 1396 1977 2680 3680 5647 10573 23660 57337 139252 327237 735875 1581526 3255625 6439893
|
||||
3 2 1 11 51 144 311 558 852 1090 1092 721 399 2636 15873 63221 200974 555710 1395269 3259282 7191730
|
||||
10 20 39 72 124 200 305 444 622 844 1115 1440 1824 2272 2789 3380 4050 4804 5647 6584 7620
|
||||
10 14 21 31 44 60 79 101 126 154 185 219 256 296 339 385 434 486 541 599 660
|
||||
15 22 50 127 306 692 1486 3056 6053 11595 21551 38989 68939 119809 206136 353922 610671 1063484 1870260 3311259 5871060
|
||||
24 34 56 108 216 415 750 1277 2064 3192 4756 6866 9648 13245 17818 23547 30632 39294 49776 62344 77288
|
||||
5 17 30 46 76 142 279 537 983 1703 2804 4416 6694 9820 14005 19491 26553 35501 46682 60482 77328
|
||||
23 45 79 131 216 375 709 1439 3021 6384 13424 27987 57720 117371 234388 458043 873949 1627234 2961030 5285139 9308620
|
||||
4 12 28 69 170 394 844 1672 3078 5290 8514 12841 18096 23612 27910 28264 20128 -3600 -53504 -144795 -298706
|
||||
6 8 20 54 137 327 750 1678 3681 7900 16508 33465 65751 125404 232929 423014 754028 1323524 2292968 3926204 6647785
|
||||
15 34 74 142 253 445 805 1515 2932 5721 11061 20948 38662 69645 123582 219880 402005 773192 1580388 3400958 7537619
|
||||
14 18 36 88 200 404 738 1246 1978 2990 4344 6108 8356 11168 14630 18834 23878 29866 36908 45120 54624
|
||||
7 21 33 38 38 51 132 432 1343 3807 9915 24004 54595 117722 242497 480149 918267 1702557 3069065 5390478 9240728
|
||||
8 4 0 -4 -8 -12 -16 -20 -24 -28 -32 -36 -40 -44 -48 -52 -56 -60 -64 -68 -72
|
||||
23 34 45 56 67 78 89 100 111 122 133 144 155 166 177 188 199 210 221 232 243
|
||||
11 24 57 133 289 574 1056 1855 3226 5723 10482 19668 37138 69379 126787 225360 388885 651706 1062167 1686831 2615583
|
||||
8 18 38 65 105 191 414 983 2353 5493 12414 27166 57701 119382 241623 480297 940194 1813772 3444082 6419595 11703885
|
||||
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
||||
3
09/input2.txt
Normal file
3
09/input2.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
0 3 6 9 12 15
|
||||
1 3 6 10 15 21
|
||||
10 13 16 21 30 45
|
||||
257
10/10.c
Normal file
257
10/10.c
Normal file
@@ -0,0 +1,257 @@
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#define DEFAULT_FILE "input.txt"
|
||||
#define STRBUF_LEN 200
|
||||
// #define GRID_ROWS 5
|
||||
// #define GRID_COLS 5
|
||||
#define GRID_ROWS 140
|
||||
#define GRID_COLS 140
|
||||
|
||||
/**
|
||||
* @brief Reads a file and loads the grid into
|
||||
* an array of rows and columns
|
||||
*/
|
||||
void load_grid(FILE *file, char grid[GRID_ROWS][GRID_COLS])
|
||||
{
|
||||
char strbuf[STRBUF_LEN] = {0};
|
||||
int i = 0;
|
||||
|
||||
for (i = 0; i < GRID_ROWS; i++)
|
||||
{
|
||||
fgets(strbuf, STRBUF_LEN, file);
|
||||
memcpy(grid[i], strbuf, GRID_COLS);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Finds the row and col idx of the 'S' char and places them in row_idx and col_idx
|
||||
*
|
||||
* @return true if S is found
|
||||
* @return false if S is not found
|
||||
*/
|
||||
bool find_s(char grid[GRID_ROWS][GRID_COLS], int *row_idx, int *col_idx)
|
||||
{
|
||||
int r;
|
||||
int c;
|
||||
for (r = 0; r < GRID_ROWS; r++)
|
||||
{
|
||||
for (c = 0; c < GRID_ROWS; c++)
|
||||
{
|
||||
if (grid[r][c] == 'S')
|
||||
{
|
||||
*row_idx = r;
|
||||
*col_idx = c;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Checks if the cell above should be populated, and populates it if so
|
||||
*
|
||||
* @return true if the cell was populated
|
||||
* @return false if the cell was not populatd
|
||||
*/
|
||||
bool populate_distance_above(int row, int col, int distance_grid[GRID_ROWS][GRID_COLS], char grid[GRID_ROWS][GRID_COLS])
|
||||
{
|
||||
if (!row) return false;
|
||||
|
||||
char c = grid[row][col];
|
||||
if (c != '|' && c != 'J' && c != 'L' && c != 'S') return false;
|
||||
|
||||
// Check for existing distance
|
||||
char above = grid[row - 1][col];
|
||||
if (above != '|' && above != '7' && above != 'F') return false;
|
||||
|
||||
// Check for existing distance
|
||||
if (distance_grid[row - 1][col] != -1) return false;
|
||||
|
||||
int distance = distance_grid[row][col];
|
||||
distance_grid[row - 1][col] = distance + 1;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Checks if the cell to the left should be populated, and populates it if so
|
||||
*
|
||||
* @return true if the cell was populated
|
||||
* @return false if the cell was not populatd
|
||||
*/
|
||||
bool populate_distance_left(int row, int col, int distance_grid[GRID_ROWS][GRID_COLS], char grid[GRID_ROWS][GRID_COLS])
|
||||
{
|
||||
if (!col) return false;
|
||||
|
||||
char c = grid[row][col];
|
||||
if (c != '-' && c != '7' && c != 'J' && c != 'S') return false;
|
||||
|
||||
char left = grid[row][col - 1];
|
||||
if (left != '-' && left != 'L' && left != 'F') return false;
|
||||
|
||||
// Check for existing distance
|
||||
if (distance_grid[row][col - 1] != -1) return false;
|
||||
|
||||
int distance = distance_grid[row][col];
|
||||
distance_grid[row][col - 1] = distance + 1;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Checks if the cell to the right should be populated, and populates it if so
|
||||
*
|
||||
* @return true if the cell was populated
|
||||
* @return false if the cell was not populatd
|
||||
*/
|
||||
bool populate_distance_right(int row, int col, int distance_grid[GRID_ROWS][GRID_COLS], char grid[GRID_ROWS][GRID_COLS])
|
||||
{
|
||||
if (row == GRID_ROWS) return false;
|
||||
char c = grid[row][col];
|
||||
if (c != '-' && c != 'L' && c != 'F' && c != 'S') return false;
|
||||
|
||||
// Check for connecting pipe
|
||||
char right = grid[row][col + 1];
|
||||
if (right != '-' && right != '7' && right != 'J') return false;
|
||||
|
||||
// Check for existing distance
|
||||
if (distance_grid[row][col + 1] != -1) return false;
|
||||
|
||||
int distance = distance_grid[row][col];
|
||||
distance_grid[row][col + 1] = distance + 1;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Checks if the cell below should be populated, and populates it if so
|
||||
*
|
||||
* @param data
|
||||
* @param list
|
||||
* @param grid
|
||||
* @return true if the cell was populated
|
||||
* @return false if the cell was not populatd
|
||||
*/
|
||||
bool populate_distance_below(int row, int col, int distance_grid[GRID_ROWS][GRID_COLS], char grid[GRID_ROWS][GRID_COLS])
|
||||
{
|
||||
if (col == GRID_COLS) return false;
|
||||
|
||||
char c = grid[row][col];
|
||||
if (c != '|' && c != 'F' && c != '7' && c != 'S') return false;
|
||||
|
||||
// Check for connecting pipe
|
||||
char below = grid[row + 1][col];
|
||||
|
||||
if (below != '|' && below != 'J' && below != 'L') return false;
|
||||
|
||||
// Check for existing distance
|
||||
if (distance_grid[row + 1][col] != -1) return false;
|
||||
|
||||
int distance = distance_grid[row][col];
|
||||
distance_grid[row + 1][col] = distance + 1;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool populate_distances_around(int row, int col, int distance_grid[GRID_ROWS][GRID_COLS], char grid[GRID_ROWS][GRID_COLS])
|
||||
{
|
||||
bool progress_made = false;
|
||||
if (populate_distance_above(row, col, distance_grid, grid)) progress_made = true;
|
||||
if (populate_distance_left(row, col, distance_grid, grid)) progress_made = true;
|
||||
if (populate_distance_right(row, col, distance_grid, grid)) progress_made = true;
|
||||
if (populate_distance_below(row, col, distance_grid, grid)) progress_made = true;
|
||||
return progress_made;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Preform pass of entire grid and populate next step of distances
|
||||
*
|
||||
* @param distance the current distance to populate around
|
||||
*/
|
||||
bool populate_distance_step(int current_distance, int distance_grid[GRID_ROWS][GRID_COLS], char grid[GRID_ROWS][GRID_COLS])
|
||||
{
|
||||
int row = 0;
|
||||
int col = 0;
|
||||
bool progress_made = false;
|
||||
|
||||
for (row = 0; row < GRID_ROWS; row++)
|
||||
{
|
||||
for (col = 0; col < GRID_COLS; col++)
|
||||
{
|
||||
if (distance_grid[row][col] == current_distance)
|
||||
{
|
||||
progress_made = populate_distances_around(row, col, distance_grid, grid);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return progress_made;
|
||||
}
|
||||
|
||||
void print_distance_map(int distance_grid[GRID_ROWS][GRID_COLS])
|
||||
{
|
||||
int row = 0;
|
||||
int col = 0;
|
||||
for (row = 0; row < GRID_ROWS; row++)
|
||||
{
|
||||
for (col = 0; col < GRID_COLS; col++)
|
||||
{
|
||||
if (distance_grid[row][col] != -1) printf(" %0.2d", distance_grid[row][col]);
|
||||
else printf(" .");
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
// Get filename as an argument, if there is one
|
||||
char *path = (argc > 1) ? argv[1] : DEFAULT_FILE;
|
||||
|
||||
if (!path)
|
||||
{
|
||||
printf("Requires input file.\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
FILE *file = fopen(path, "r");
|
||||
|
||||
if (!file)
|
||||
{
|
||||
printf("Could not find file.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
char grid[GRID_ROWS][GRID_COLS] = {0};
|
||||
int distance_grid[GRID_ROWS][GRID_COLS];
|
||||
memset(distance_grid, -1, sizeof(distance_grid));
|
||||
|
||||
load_grid(file, grid);
|
||||
|
||||
int r = 0;
|
||||
int c = 0;
|
||||
|
||||
if (!find_s(grid, &r, &c))
|
||||
{
|
||||
printf("Could not find S???\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
int current_distance = 0;
|
||||
distance_grid[r][c] = 0;
|
||||
|
||||
bool progress_made = true;
|
||||
while (progress_made)
|
||||
{
|
||||
progress_made = populate_distance_step(current_distance, distance_grid, grid);
|
||||
printf("---\n");
|
||||
current_distance++;
|
||||
}
|
||||
|
||||
print_distance_map(distance_grid);
|
||||
|
||||
printf("Longest route: %d", current_distance);
|
||||
|
||||
return 0;
|
||||
}
|
||||
140
10/input.txt
Normal file
140
10/input.txt
Normal file
@@ -0,0 +1,140 @@
|
||||
F|7.F|-F|777FJ7FF77-F777F7F|7..FF-77FF|--JJFJ7-J-F77.FF-F7F-F-FL7|--7---F.FL-7-7J.FFF7|-FFJ7.7.LF-LLJ77|F7FJJ-JFF|-.|FFF7F7..FFL7F-FJ-7-LL77
|
||||
|-J-JL.LL7-7-J|FLJLJ.L|7|F-J-|-FL7L-7-J-LJFJ-77FF-LL-FJFLLJ7L.L.||..7FJ7J7FJFL-LJFLJL--.|7JL||FLJLL|JLJ.LL7J.FF|-J.L---JJ.F77L-LLF7L|F77LJ|J
|
||||
LLJ|FJF-F--7LFL-J|7F--F--JJ|-JF-7|F-JJJ..FLJ.LFJJ.FJ-|J|J7.JFFJ-7---LLJL7FJ.J-FL-FLF7|LLJJ|L-J--7JJ|77LJ.FJFFFJL7J7|-|-J.FL7JL|LLJL7L7JFF.JJ
|
||||
7-L-J7|LJJ-7-JLLF77J7.LF77LLJJL7|||F7J.|-FJ|FL7|-|7|JL7JLF|--JJJ|J7..|LL|J7-|FFJ|LJ.7--L|L7.L|F7.FF||L..FLJL-JF-JFLFF77.FFLLJL7F|F-J-L7JFJJ.
|
||||
-7JL|7L-||F7|F|JF-F---7|L77F|-FJLJ||L7-J7|7F7.L|7L|JL---7-|7LJ|-|.F7--.|.L-FJ7JJLL-7|LF-7F|FF77JF7JLJ7.|.|-|7J|.L-.|JL--FJ7--7|-FJ7|J|LLL--J
|
||||
L77JLJ-FJ-FJJ-|7JF77LF-7LL-F7FJF-7||FJF7L|J-J7JL--||FJJ-|..J..F-7--FJ|77.L7|L7-7..FL-.L7|-L|J|J.FJ7|F-FJ--.J7F-LFJ--J.FF|-7--7--|-F-FJ.LL7|J
|
||||
LLF7-7F7.-L|JLJ|.LJ-.F7|FF.||L-JFJ||L7F7L|J.L-77-77-JJ.-J77.F.L7|F|L77|L-7F--J|--LLJ|.F||J-LFLJFF7--|L|..|-|L|JFJ77|.L--77.LJ-JLL-7F|-7|LLL7
|
||||
|.||.F-...FLF-7L7-7FJ|FJ||FJ|F-7L7||FJ||F77.-7L||.|-|.LLL-7.F-7||J7-LJ77L||J--||.|JFFJF|L-7F7JF-J|7J|||-LL7|.|F7LJ-|.F7FL7F7J||LL7LF--77-L|7
|
||||
FFJ7.||.--7.JJF.7.F-J7|F7FL7LJFJFJ||L7|||L7.|L7|J-F777-|L7-7L7LJ|JL7-L-77L-.7L|7FF-|J|-L7FJ||F7.FLL77F-.FLLF7-||7LFF-LF|.|-J7FL-7|...-77F-LJ
|
||||
||L|7F7JJ|J...F.777JJL7||F7L-7|FJFJL7||||FJ7-F7||-||-F-J|..FLL7FJ7JF-7L|7-L--FJ||7-J.F7FJL7|L7LLJJ7LFJF|J7F|L-JL7-7|.|||FL7LJ7LJ-|-77.LFJ|..
|
||||
LJ7FJ-J|-JFF|-J7L-.|JFFJ||L--JLJFJF-JLJLJL7F7F7-7F||7|-F7-FFF7||F-7J-7-L|7J7.||F7.J|.||L7FJ|FJ|F|7LL-|7L---L--7FJJJF7F|JF-7--|7||||F-F-||L|7
|
||||
|.LL|J.L-JFLJF7|.|7.F-L7LJF--7F7L7|F----7FJ||||-F7||FF7F7F--JLJLJFJ||F.|J.LF-LFJL7JF-JL-JL-JL7-F.|JF-|F77F|||FJL77.-JF7.LF7LFJ-|7-||FL-|-JL|
|
||||
JFF-7.FFLFJ7-FLJ7L7F|7FL7FJF-J|L7LJL---7LJFJLJL7|LJL-J|||L----7F-J|FFJ--F77.|.L-7L7L-7F------JJ.FF77--J|7FF7FJF7L7-.LL--FJ|||L-LJ.LJ7.|J.L|J
|
||||
|FJJ|.---L-JJLL||L|LF-7FLJ7|F-JJL-7F---JF7|F---JL--7F-J|L7F-7FJL7J7LJL-L||L-7F7FL7L7L|L---7F7J-FF7F777F-7FJLJFJL-J7F77J7.L|F|J|LJFL7F7L-7-7-
|
||||
L77FJ-||7FF7---LJ-7.LJF7F-7LJF-7F-JL-7F7||||F7F7LF-JL7FJFJL7||F-JF77J||L||7LFJ|F7L7L7|F---J|L-7F|LJ|F7|FJL--7||F7F-J|F-77F-|J77LF|-JJJ.J7.LJ
|
||||
||LJ..L-LJJ-7-7L7.L.FF|||FJF7L7|L-7F-J|||||||LJL7L7F-J|FJJFJLJ|F7|L7F-7.|L7FJFJ||.L7||L--7||F-J-L-7LJ|||F7|FJL7|||F-J|FJJ-.|L-7-|L|.|L.L|77.
|
||||
F7-LJ7|JFL|7LFJ|L7.FF7|LJ|FJL-JL--J|-FJLJLJLJF--JFJL7FJ|F7L7F7||LJFJL7|-L7|L7||||F7|||F--JFJ|F7F7LL-7LJLJL7L7FJ|LJL--JL7J.-|-L--F-7F|--|J|7L
|
||||
J77F.JJ.J-7J-L7F77F7||L-7|L-------7|FJF------JF7|L-7||FJ|L7LJ|LJF-JF7||F7||FJL7|LJLJLJL-7|L7|||||FF7L7F7F-JL||FJF7F----J---J|.|7L7L7|.FLF|77
|
||||
FL-JF|FL-7.|7LLJF7||||LFJL-7F7F7F7|LJFJ-F--7-FJL7F-J|||L|FJFFJF7L-7|||||||LJF-JL---7F7F-JF-J||LJ|FJL7LJ|L-7L|||FJLJF7F7J.|-|FL.L--7FJ---|JL7
|
||||
FF7L-|L|.L|||.FFJLJLJL7L--7||||LJ|L7FJF7|F7L-JF-JL-7LJL7|L--JFJL7FJ|||LJ||F-J-F-7F7||LJF7L-7||F-JL-7|F-JF-JFJLJL7F7|LJL77FFJLL|.L.JJL-J7J-J|
|
||||
|-7FFJL|.|||..FL-----7L---JLJ|L-7L7|L7|LJ||F7FJJF-7|F7FJ|F--7|F7LJFJ|L-7|||F-7L7LJLJL--JL7FJ||L7F7FJ|L7FJF7L7F--J|||F--JF77L-7J.|L.|.LL|-7J7
|
||||
7F77|J7|F--FF-7JLF7F7L------7S77L7LJFJ|F-JLJLJF7L7|LJ|L7LJF-JLJL77L7|F-JLJLJFJFJF---7F---JL7LJFJ||L7|L|L-JL-JL7F7||||F-7||LL|LF--J.L7FL|L|-|
|
||||
L7|LJ|F7L.J.L7|FL|LJ|F7F----JFJF7L-7|FJL7F7F-7||FJL-7|FJF7L-7F-7L7FJ|L---7F-JFL7|F--JL----7|F7|FJ|FJ|FJF--7F--J|||||LJFJ||F7|F|F|FJLJ7.7J|LF
|
||||
F-FJLJLL---FFJL7LL-7LJ|L-7F-7L7|L--JLJF-J|||FJ||L--7LJL7||F7|L7L-J|FJF-7L|L--77LJL--7F----JLJ|LJFJL7|L7|F7LJF-7|||LJF-JFJL--7-JL77||.|7LLL7L
|
||||
FJ|J-|J-FJ.FL-7|-F7L-7|F7LJFJFJL--7F-7L-7||||7|L7F7L-7FJ||||L7L7F7|L7L7|FJF--JF7-F7FJL--7F-7FJF-JF7|L-JLJL7FJFJ|||F7L--JF7F-JFLLJ|L-.|FF.FJJ
|
||||
L7.LF777FFF7F7||.|L--J|||F7L7|F7F7LJJ|F7||LJL7L7|||F7|L7|LJL7L7||||FJFJ|L7|7F7||FJLJF---J|FJL7|F7||L-7F---J|FJFJLJ|L----JLJF77--7-7.L-JLF|J.
|
||||
FJ7LJJL--LLFJLJL-JF--7LJLJL-JLJ|||LF-J|LJL-7FJFJ||LJ||FJL-7FJ.|||LJL7L7L-JL7|LJ|L--7L7F7FJ|F7|||LJL7FJL7F7L|L7L-7FJF--7F7F7||JLFJF|7LLF--J.|
|
||||
|JL.J7-|J|.L-7F---JF7L--------7|||FJF-JJF-7|L-JFJL-7||L-7FJL-7|LJF--JJL-7F-JL-7|F7FJFJ||L7|||||L-7FJL-7LJL-JFJF-JL7|F-J|LJ|||-FJFF7--J..||-|
|
||||
JLLFJLFJFF--7LJF--7|L7F7F7F---JLJLJFJ7F7L7||F--JF-7|LJF-JL-7FJL-7L7F7F--JL7F7L||||L7L7||FJ|||||F7||F-7L7F---J7L-7FJ||F-JF-J||F7F-J|.|F|-L7.7
|
||||
|.|.FJL-FL-7L-7L-7LJFJ|||||F7F---7FJF7||FJLJL-7FL7LJF7L7F7FJL7F7|FJ||L---7LJL7|LJ|JL7|||L7LJLJ||LJ|L7|7||LF7F7F7|L-JLJF7L--JLJLJF-JFF-|L|77F
|
||||
L77.|7FFF--JF7L7FL-7|FJ|||LJLJF77|L7||||L--7F-JF7L--JL7LJ|L7FJ|||L7||F7F7|F--JL-7L7FJLJL7L7F--JL-7L7|L7|L7|||||LJF----J|F7F-7F--JFJ7|F--7L|J
|
||||
F||7L-77L---J|FJ7F-J|L7|||.F--JL7L7|||||F--JL7.||F-7F-JF-JL||FJ||FJ|||||LJ|F7F7FJFJL--7FJFJL---7.L7||FJ|FJ|LJLJF7L----7LJLJLLJJJ-|-LL--7J-LJ
|
||||
L|-FF7LF.FF--JL-7L-7L-J||L7L-7F7L-J|||||L---7L7||L7|L-7L7F-J||FJ||FJ|||L-7|||||L7L7F7FJL7L7F---JF7|LJ|FJ|FJF-7FJL-----JF--7F7.FLJ|L|.|JL--JJ
|
||||
F.LLJF.|F7L----7L--JF-7|L7|F7LJ|F-7LJ||L7F7FJFJ||FJ|F7|FJL-7||L7|||FJ||F7|LJLJL7|FJ|||F7|FJ|F-7FJ||F-JL7LJFJ.LJF7F7F7F7|F-J||-||F|.|FL7L|..L
|
||||
J.L|.L-FJL-7FF7|F---JFJL-J||L7FJ|7L7FJ|FJ|||FJ-||L7|||||F7L|||FJ||||.||||L7F---J||7||||LJL7||FJ|FJ||F7LL7FJF---J||LJLJLJ|F-JL--7-J7-|F7-L.|.
|
||||
F----FFJF-7L-J|LJF7F-JF--7|L7||FJF7||FJL7|LJ|F-J|FJ||||||L7|||L7||||FJ|||FJL7F--J|FJ||L-7FJLJ|FJL7||||F7||FJF7F-J|F--7F7LJF7F--J7F7-F7J-7|LL
|
||||
JJ-7L-L-JFL7F7L-7||L7FJF7||FJ|LJFJLJ||7L||F-JL-7|L7LJ||LJF|||L7||||||FJ||L7FJ|F--JL7|L7JLJ|F-J|F-J|||||LJ||FJLJF-JL-7LJL--J||F7LFJ|FJL7J7|F|
|
||||
|L|LFLJJ.F7LJL-7||L7LJFJLJ|L7|F7L--7|L7FJ||F7F7||FJF-JL7F7|||FJLJ||||L7||FJL7|L-7F7|L7L7F--JF7||F7||||L77LJL---JF7F-JF-7|F7LJ||-L7||F-JLFFJ|
|
||||
|-|..|J-FJL----J|L7||FJF-7L-JLJL---JL-J|FJ||||||LJFJF-7LJ|||||JF7||||7LJ|L7FJ|F-J|||FJFJL7F7|||LJ|||||FJF-----7FJLJF7L7L-J|F-JL--JLJ|J7||F.J
|
||||
F-FL--7L|F---7F7L7||FJFJJL--7F7F-7F--7FJL7|||||L-7L-JFJF7||||L-J|LJ||F--JFJL7|L7FJ||L7|.FJ||||L7FJ|||LJFL---77LJF7-|L7|F--J|F----7F7|-|F-|7J
|
||||
|FL|.|FFJL7F-J|L7LJLJFJF----J|||FJ|F-JL-7||||||F-JF7FJFJ|||||F-7L-7|||F-7|F-J|FJL7||FJL7L7||||FJL-J||F-----7L---JL7|FJ|L7F-JL---7LJLJ|LJ||.|
|
||||
L-J.FFJL--JL--JFL---7L7|F7F-7|LJL-JL---7LJLJ||||JFJLJFJFJ||||L7L7FJ||||FJ|L-7||F7|||L7FJFLJ|||L7F--J|L7F--7L------J||7|FJL7F----JL|-L7FJ-|-7
|
||||
|.F-J|L|7F---7F-----JFJLJLJ.||F---7F---JF7F7LJ|L7L7F7|-L7|LJL7|7|L7||LJ|FJF-J|||LJ|L7|L-7F-J||FJL7F7L7LJF-JF7.F--7J|L7||F7|L-7FF7F7.F-J|.LFJ
|
||||
F-|7LJ-JFL--7|L7F7F-7|F7F7F7LJL--7|L----JLJL-7|FJJLJLJF-JL7FFJL7|FJLJF-JL7L-7||L-7|FJ|F7||F7|LJF7||L-JF7L--JL7|F-JFJFJ|LJLJF-JFJLJL-7JFFFJ|J
|
||||
JFL-L7.F----J|JLJLJ||||LJLJL--7F-JL------7F7FJLJF7F-7|L7F7L7L7FJ|L-7FJF7FJ-FJ|L-7||L7||LJ||||7FJ|LJF77||-F---J||F7L7L7|F---JF7|F----J|||F--.
|
||||
|FJF-|.L----7L-7F7F-J|L7F7F7F7|L--------7LJ|L7FFJLJFJF7LJL7L7|L7|F-JL7|||F-JFJF-J|L7|LJF7|||L7L7L--J|FJL-JF7.FJLJL-JFJ||FF7FJLJL----7-J-|.|7
|
||||
J|.|L7FF7F-7L-7LJLJF7L7||||LJ|L-------7FJF7L-JFJF7FJ.||LF-JFJ|FJ||F7|LJ||L-7L7L-7L7|L--J|LJL7|LL---7LJF---JL-JF----7L-JL-JLJF---7F--J.||J-L7
|
||||
|-F7-LL||L7|F7L7F-7|L7|||LJF7L-------7LJFJL7F-JFJLJF7|L7|F7L7|L7|LJL7LFJ|F-JFJF-JFJL7F7FJJF-J|F----JF7|F---7F7L---7L7F--7F-7L--7LJ7.J.LF-F-7
|
||||
7-7L|.||L-JLJL-J|FJ|.||LJF-JL-------7L-7|F7|L-7|JF7|||FJLJL7||FJL7F-JFJFJL-7|-L-7L-7||||7FJF7|L7F7F7|||L-7.LJ|F-7FJ.|L-7LJFL7F7L--77FJ.|-7J.
|
||||
--L7F-F|F-7F---7|L7L7||F-JF7F--7F--7L--J||LJF-JL-JLJLJL---7|||L-7LJF7L7L7F-JL-7-L7FJ|||L7L-JLJFJ|||LJ||F7L--7LJFJL-7|F7L---7|||F7FJ-J.-F-J.F
|
||||
||L7|7JLJ-|L7F-JL7L7|LJL--JLJF7LJF7L---7||F7L7F----7F-7F--J|||F7L--JL7L7|L-7F7L7FJ||||L7L-7.F7L7|LJF7LJ|L---JF7L7F-JLJ|F7F7|||LJ||JLJFL||..|
|
||||
FJFFFL.FLFJFJL7F-JFJ|F-7F7F--JL-7||F---J||||J|L---7||F||F-7|||||F7F7FJFJ|F-J|L-JL7L7LJFJF-JFJ|FLJLFJ|F7L-----J|||L--7FJ|LJLJ||F7LJF7|7FL7-FJ
|
||||
L7L77JFFJL-JF-JL7-L-JL7LJLJF7F-7LJLJF7.FJLJL-JF---J|L7|LJFJLJLJLJ|||L7L7|L-7L---7L7|F7|FJF7L7|F7F7L7LJ|F------JFJF-7|L7L77F-JLJL7F-FL|L-F.J.
|
||||
FJ-|||F--|F7L7F7|7LF--JF--7||L7L7F-7||FJF7F-7FJF--7L7||F7L7F-7F7L|||FJFJ|F-JF7F-J.LJ||LJFJL-JLJLJL-JF7|L-7F7F7JL-J7LJ7L7L7|F7F7FJ-FLFJLLJF.7
|
||||
FJ|LJ-L7.FJL-J|LJF7L---JF7LJL-JLLJFLJLJFJLJL|L-JF-J|LJ||L7|L7LJL7LJLJFJFJL-7|LJF----JL-7L----7F7F7F-J||F7LJLJL---77F-7FJFJLJ|||L77-.L-7LF|-7
|
||||
|-F7-|J|-L7F-7|F-J|F7F7FJL-7F7FF-------JF7F-JF--JF--7-LJFJL-JF7FJLF7LL7|F--JL-7L-7F7F7FJ-F7JFJ|LJLJF-JLJL---7F7F7L7L7|L-JF7-LJ|FJJ-FJ.F--J7|
|
||||
L|LF7|-LL-LJFLJL-7||LJLJF-7LJL7L--------J||F7L7F-JF7L-7JL7F7FJLJF7|L7|||L7F7F-JF-J|LJ||.FJL-JFJF7F-JF------7LJ||L7L7|||F7|L--7LJ7-LF7-7F7LL7
|
||||
FJ-L77777LFJ-F---J||F7F7|FJF7FJF----7F-7FJLJL7LJF7|L-7L-7LJ|L---JLJFJ-||-|||L-7|F7|F-JL7L----J-|LJF-JF7F7F7L-7LJ-L-J|L-JLJF--JJ.77.L7..F7-J|
|
||||
|||L|J.77-L|FL---7|LJ||||L-J|L7L-7F7LJ7LJF7F-JF-J|L-7L--JF7L7F-7F7FJ.FLJL|||F-J||LJL7F7L--7F7F7L--JF-JLJLJL--JF7F7F-JF-7F7L--7|||-LF7FFF7.FJ
|
||||
|FF-JJ7LF7-LF----JL7|LJLJ7F7L7L-7LJL7F---J||F7L-7L--JF7F-J|-LJJLJ|L--7-F-||||.LLJF-7LJL--7|||||F7F-JF-----7F7||LJLJF-JJLJL---J7F||LL-LFJ|F7J
|
||||
LL7.J.LFJ|.FL-----7|F7F7F7|L7|F7|F7FJ|F---JLJL-7L7F--JLJF7L---777L7F-J--JLJLJ7..FL7|F7F--JLJ||||||F7|F----J|L7|F7F7L7F7-F7F7F7F-77.|.||L-LJJ
|
||||
LL77.L7L7L7F7F7F--J||LJ|||L7|LJ|LJLJFJL---7FF-7L7LJF7F7FJ|F7F7L--7|||J-JF||LL7FFF7||||L-7F-7LJ|||LJ||L-7F7F|FJ||LJL-J|L7|||LJ||FJ|F--J|JJJFF
|
||||
LL|||L7.L7LJ||LJF-7|L7FJ||FJL7FJF--7|F----JFJFJ-L--JLJLJ7LJLJL-7FJ||-J7FJL7|7.FFJLJ|||F7LJ.L-7LJL7JLJF7LJL-JL-JL--7F7L7LJ||F7LJL-77.|LFJJLJJ
|
||||
.|LL-J.7|L-7|L--JFJL-J|FJ|L-7||FJF7LJL-7|F7L7|JF7F---------7F7-LJ.LJ.LF-7-J7-7JL--7LJ||L--7F7L7F7|F--JL-7F7F------J|L-JF7LJ||F7F7L7777|.FFJJ
|
||||
FL-|LFF--7.||F77FJF7F7LJFJF-J|LJFJL-7F7L7||F|L7|LJF-7F7F7F7LJL---7|.7JF-JJLJFFF7F-JF-J|F-7LJL7||LJL----7LJ|L--7F---JF7FJL--J||||L7|7-J7FFL-7
|
||||
||.|J|L-7L-JLJL-JFJLJL-7L7L-7L7FJF-7LJL7LJL-JFJ|F-JJLJLJ||L------JJ7-7LF|JJJF-J|L-7L-7LJ7L--7LJL7F7F7F7L-7L7F7LJF-7FJLJF---7||LJ-LJJ|.|LF-7|
|
||||
FF|J.F|JL----7F7FJF---7L7L--JFJL7L7L-7.L7F-7FJ-||F7F---7|L--77L|LJ-F-L-L-F77L-7|F-JF-JF7-F7J|F-7LJLJLJL--J7LJ|F-JFJL---JF7FJ|L7|.|.F77-J.|FL
|
||||
J.FJF7LLF--7.LJLJ|L--7L-JF7F7L-7L-JF-JF7LJFJL--JLJLJF--JL-7FJ77.|.|J.J-JJ|L--7||L-7|F7|L-JL-JL7L------7F---7J|L-7L7F7F-7||L7L7L7FL-FJJL7-LJ|
|
||||
|F|F|7FLL-7|F7|-F----JF--JLJL7FJ7F-JF-JL7-L7F7F-7F-7L----7LJJLJFFFF--7|LLL7F7LJL--JLJLJF7F7F7FJF7F7LF7LJF-7L7|F7L7LJ|L7LJL-J7L7L7J.L|.LFJ.FL
|
||||
FJLFF7F-7FJLJ|F7L-7F--JF-----J||FJF-JF--JF7|||L7LJFJF7F--JF|7.LFJF-JF-JJLLLJL-7F7F-7F-7|||LJLJFJLJ|FJL-7L7L-JLJL7L7FL7L7F7F7F7L-J.FFJ|.|.7-L
|
||||
77F7|||FJL--7LJL7|LJF-7L7F-7F7L-JFJF-JF--J||||FJF7L-J|L---7F7F77L7-L|J...-F--7LJ|L7LJFJ|LJF---JF-7LJF-7L7L--77F7L7L-7L-J|||LJL----7JL|F|FL-|
|
||||
F-JLJLJL---7L--7|F7-L7|JLJ.LJ|F-7L7L--JF7FJ|||L-JL--7L----J|LJ|7.|FL|.FL.FL-7L--JFJF7|FJF-JF7F7|JL7FJFL7L---JFJ||L--JFF-JLJF--7F--J7.LJ-7JF|
|
||||
L-7F-7F-7F7L---JLJL-7||F-7FF-J|FJFJF7F7||L7LJ|F-----JF-----JF7L77-JL|77FL77|L-7F7L7|LJL7L--JLJ||F-JL7F-JF--7-L7L------JF7F7L7JLJ|F||F|-J.F||
|
||||
L.LJ.||FJ|L-7F-7F7F7LJ|L7L7L--J|FJFJLJLJL-JF7LJF----7L7F--7FJL-JJ|FFJ|L7--L||FJ|L7||F-7|F-----J||F7FJL--JF-JF7|F------7|LJL-J7-F--7FF77.--77
|
||||
.FLJFLJL-J7FJ|FJ||||F7L7L7|F7F7LJJL7F7|F7F7|L--JF--7|FJL-7|L-7F7-FFJL7-7|.LLFJFJFJ||L7LJL-----7|||LJF7|F7L--JLJL-----7|L-----7-L7FJ7|L.FJL||
|
||||
FF7-FJF--77L-JL-J||LJL7L-JLJLJL7JF7LJL-JLJLJF---JF7LJ|F--JL--J||F7L7-|7L77.FL7L7L-JL-J.F--7F-7LJ||F-J|FJL-7F7F-------JL------JF7|||JL7F|.|L|
|
||||
LFF7||L-7L7F-----J|F--JF7F----7|FJ|F---7F7F7L---7|L--JL--7F7F7||||F7F|J-||F7J|FJF-----7L-7|L7L-7LJ|F7LJF-7LJ|L7JF7F7F7.F7.F7F7|LJL-7.F-F-J.|
|
||||
.FJL--7-L7|L------JL-7FJ||F--7||L7LJF-7LJ||L7F-7LJF------J|LJ||||||L7J-F7J7LFLJ7L----7L--JL7|F7L-7||L7FJFJF7L-JFJLJLJL-JL-J||LJF---J-J|L-7LJ
|
||||
FL---7|F7||F7F---7FF7|L7||L-7LJ|JL-7|FJF7LJFJ|7|F7L-7F7F7F|F-J|LJLJFJJ.||||||F-7JF7F7L---7FJLJ|F-JLJ|LJ-L-JL---JF-----7F7F7LJF7|F--7-FJ7L7.|
|
||||
7-LLFJLJLJLJLJF-7L-JLJFJLJF7L-7L-7-LJL-JL-7L-JFJ||F7LJLJL7||F7|F--7|JLF|L77--|FJFJLJL----JL7F7||F77F----7F------JF---7LJLJL--JLJ|F-J-|.|7LJJ
|
||||
L--L|F-7F-7F7FJ-L-7F-7L77FJL7FJF7L------7FJF7-|FJLJ|F-7F-J|LJLJL-7||7LFJFJ.F7|L-JF7F------7LJLJLJL7L---7LJF7-F7F7|F-7L7F7F7F----JL-7FJ-J|FJ|
|
||||
|-|.LJFJL7LJ|L-7F-J|FJFJFJF7LJFJ|F-----7|L-JL7|L--7|L7|L-7|F--7F-JLJF-JFJ|F-7L---JLJF-----JF7F-7F7L7|F7|F-JL-JLJ|||FL7LJ||LJF------JJ|LL7LF-
|
||||
L--L-FJF7|F7L7FJL7FJ|FJJL-JL7FJFJ|F-7F-JL-7F7||F7FJL7|L-7||L-7|L--77L-7|F7L7L7LF7JF|L---7F-J||L||L7L7||LJF7F7F--J|L-7|F-J|F-J.F--7|JFFJ.7-LJ
|
||||
.|-|.L7|LJ|L7|L-7|L7LJF---7FJL7L-JL7|L-7F7LJ|||||L-7|L-7LJ|F-JL---JF--JLJL7|FJ7|L7FF7F7JLJJFJL7LJ7L7LJL--JLJ||7F7|F-JLJ|FJL7F7|F-JF7-F7FJJ..
|
||||
F.FF-FJL-7L7LJF-JL-JF7L--7|L--JF---J|F-J||F7LJLJ|F-JL--J-FJ|F7F--7|L----7FJ||F7L7|FJLJL----JF7L7F7-L7F-----7||FJLJL7F---JF7LJLJL--JL-JL77FL7
|
||||
77-|LL-7FJLL-7|F-7LFJ|F7FJL7F7-L7F-7||F-JLJL7F7.LJ-F7F7F7L7||||F-J7F-7F7||FJ|||FJ||F--7F---7|L7||L--J|F---7|||L-7F-J|F---JL-7F---------J-FJ.
|
||||
L7.L7LFJL7|FFJ|L7L7L7LJ|L7FJ||F7|||||||F---7LJL---7|||LJL-JLJ|||F-7L7|||||L7LJ||FJLJF-J|F--JL7||L----JL--7LJLJFFJL--JL-----7|L-----7|FLJJ|J.
|
||||
|L--J-L7FJ77|FJLL7|JL-7L-JL-J|||LJFJLJ||F7FL------J|||F--7F--J|LJFJFJLJ||L-JF-J||7F7L--JL---7|||.F7F7.F-7L7F7F-JF7F7F---7F-J|F-----J777JL|.F
|
||||
J7..|-FLJ|F7LJF--J|F--JF-7F-7LJL7FL77FJLJL7F------7||LJF-JL--7|F-JFJF-7LJF--JF7|L7||F7F---7LLJLJFJLJL7L7|FJ||L7FJLJ|L--7LJLFJL--------7J.JF|
|
||||
FF--|-7FFF||F7L--7LJF--JJLJ|L--7L-7L-JF--7LJF--7F-J||F7L7F7F-J|L7|L-J7|F-JF7FJ||FJ||||L--7L-7F7FJF--7L-JLJF||FJL--7|F--J-F7L-7F-7F7F--J77.J|
|
||||
FLJ-L-F7FF|LJL7F7L-7L7F-7LF7F-7|F7L--7L-7|F7L-7LJF7|||L7LJ|L7FJFJF7F7FJL--J|L7LJ|-||||FF7|F-J|LJFJF7L-7F---JLJF7F7||L7F--JL-7LJFJ|LJJLLFJ--7
|
||||
7J7.L|LL-JL7F7LJ||FJFJL7L7||L7|LJL-7|L7FJLJL--JF-J||||FJJFJFJ|FJ.||||L-7F-7L7L7FJFJ||L7|||L7FL--JL||F7LJF---7FJLJLJL-J|F---7L-7L7L7||FFF7|J|
|
||||
F-F7LFF7L-FJ||F7L-JFJF7L7LJ|FJL----JF7LJF7FF-7.|F-J||||F7L7|FJL7FJ||L-7||JL-JFJL7L7||FJ||L7L7F7F--JLJL7JL--7LJF7F7F7F7|L--7|F-JFJFJ-J---LJF|
|
||||
L-.LJ|L77LL7|||L7F7|||L7L-7LJF------JL--JL7L7L7||FFJ||LJL7|||F-JL7|L-7LJL7F7FJF-JFJ||L-JL7|FJ||L-7F--7L7F-7L--JLJLJLJLJF--JLJF7L-J-7JJJ.L-L-
|
||||
|-|LF7.LF7LLJ||FLJ|L7L7L--JF7|F-----------JFJFJ||FJFJL--7||LJL7F7||F7L--7LJ||FJF7|FJL---7LJL7||F7LJF-JFJL7L--------7F-7L--7F7|L-7JF77-JF.LL7
|
||||
7|L|.||.J77J.LJ-F-JFJ7L--7FJLJL--------7F77|FJFJLJFJF---J||F--J||||||LF-JF-J||FJ||L7F7F7L-7FJ||||F-JF7L-7L--7F7-F7JLJ.L7F-J|LJF7|FJ|7FFL7-LJ
|
||||
|7F|F7|7JF7-FJF|L--J7F---JL7F---------7LJL-JL7L7F-JFL--7FJ|L7F-J|||||FJF7|F7||L7||FJ||||JFJL7||||L7FJ|F7L--7LJL7|L-7F7JLJF-JF-JLJ|FJF-7-F.FJ
|
||||
F-LJ|J7|--JF7-F7FFF--JF--7FJL7F7F7F--7L-7F--7|FJL--7F-7||FJFJL-7|||||L-J|LJLJ|FJ||L7|||L7L-7||||L7||JLJL--7|F-7LJF-J|L7F7L-7|.F7FJ|FJFJ|JFF7
|
||||
|-|LJF7||.J-|.||FFJF-7|F-JL7F||LJLJF7L7FJL-7LJ|F---JL7||||FJF7FJLJLJ|F7FJF---JL7|L7|||L7|F-JLJ||FJLJF7F---JLJLL--JF-JFJ|L-7||FJLJFJL7|F7F7LJ
|
||||
L7L7|FJL-7.-JL|L7L-J|LJ|F7FJFJ|F---JL-JL---JF-JL--7FFJLJ|||FJ|L----7|||L7|F7F7-|L-J|||FJ|L--7FJ||F--JLJF-7F7F-----JF-J||F-J|||F--JF7|LJLJL7J
|
||||
LJFF---|.|7FF.L7L--7F-7LJLJJL-JL----7F7F7F7-L-7F--JFJF--J|||FJF7F-7|||L7|LJ|||FJF-7|||L7L-7FJ|FJ|L-7F-7|FJ|LJF7F-7FJF--JL--JLJL---JLJF----JJ
|
||||
||LJ..LL-.J-FF7L--7|L7L----7F7F7F---J|||||L7F7||F-7L7|F-7|LJL7||L7|||L7LJF-J|LJFJ7LJ||FJF-JL7LJFJF7|L7||L-JF-JLJF|L-JF7F--7F--------7L--7JL-
|
||||
|J7..||.|FJFFJ|F7L||-L----7LJLJLJF---JLJ||FJ||||L7|FJ||FJL--7|||FJ||L7L-7|F7|F-JF7F7||L7|F7-L7FJF||L-JLJFF7L----7L7F-J|L-7|L7F-----7L7F7|.||
|
||||
|.LF-F7FLJLLL7LJL-J|F-----JF-----JLF----J||FJ|||FJ||FJ|L7F7FJ||||FJL7L7FJ||||L-7|LJ|||FJ|||F7|L-7|L7F7F--JL7F---JFJ|F7L7FJL7LJF7F-7|FLJLJ-|7
|
||||
F7JL|.|||J..LL7F--7|L------JF------J|F7F7|||FJ||L7|||-|FJ||L7|||||.||FJL7|||L7FJ|F-J||L7|||||L7FJ|FJ||L---7LJF--7L7LJL7|L7FJF7||L7LJ-LJFL|..
|
||||
-|-F-F-|77-7FFLJF7||FF7F7JF-JF7F-7F7FJ||||||L7||FJ|||FJL7|L7|LJ||L7FJ|F7|LJL7||FJ|F7|L7|||LJL7|L7|L7|L7F-7L--JF7L7L7F-J|FJ|FJ||L7L7JJFLJ---|
|
||||
L-.F-7L7|LF-7F7FJLJL-JLJL-JF7||L7LJ|L7|||||L7LJ|L7||||-FJL7|L-7|L7||FJ||L7F7|||L7|||L7||||F-7|L7LJF||7|L7|F7F-J|FJF|L-7||FJL7|L7|FJF7-F--J.7
|
||||
-J77FF7L7FL7LJLJF-----7F7F7|||L-JJFJFJLJ||L7|F-JFJ||||FJF7||F-J|FJ||L-JL7LJ|||L-JLJL7|LJ||L7LJFJF--JL7L7|LJ|L-7||F-JF7|LJL-7||FJLJFJJ||7.|F|
|
||||
FJ|LLJF-J77L----J|F7F-J|||||LJF---JFJLF-J|.LJ|F-JFJ|||L7||||L7FLJ7LJF7F-JF-J||F-7|F-J|F-JL7|F7L7L--7FJFJL-7|F7|LJL7FJLJF7F7LJ|L-77||LFF-F-FL
|
||||
77J|FF|JL|F-------JLJF-JLJ||F-JF--7|F7|F7|F--JL-7|FJ|L7||||L7L--7F--JLJF7L-7LJ|FJFJF7||F7FJLJ|FJF--JL7L7F7||||L-7FJL-7.|LJL-7|F-J-J|-FJFL7|7
|
||||
|J-F--J.FFL-7F-7F7F7FJF7F-J||F7|F-J||||||||F-7F-JLJFJFJ||LJFL7F-JL--7F7||F7L--JL7|FJ|||||L7F-JL7L7F7FJJLJ||LJ|F-J|F-7L7L7F--J|L7..L7||J|FJLJ
|
||||
J--7.|7.JFF-J|-||||||FJLJF7|LJLJL-7LJ|||||LJFJL--77L7|FJL-7F-JL---7FJ||||||F7F7FJ|L7|||||FJL7F-JFJ||L---7||F-JL-7|L7L7L-J|F77L7|-L.|FF7|LL||
|
||||
L-|.-J7-F-|F7|FJ|||LJL7F7|||F--7F7L7FJ||LJ|FJF7F-JF-J|L7F7|L7F7F--J|FJ||||||||||FJFJ|||||L7FJL-7L7||F-7FJ|||F7F-JL-J.|F7FJ||F7LJ7F--7JLJ7LF|
|
||||
|JL7J||.J-LJ||L-JLJF7FJ|||LJ|F7LJL-JL7||F--JFJ|L-7L-7|FJ|||FJ||L-7FJL7LJ||||||||L7|7LJLJL7||F7FJ-LJ|L7|L7|||||L-----7LJLJFJ||L--77|J|-FJF-L7
|
||||
J-|7LJJF7FJ-||FF---JLJFJ||LFJ|L7F7F7FJ||L7F7|FJF7L7J||L7|||L7||F-J|F-JLFJ|||||||J|L---7F-J|||LJF---JFJ|FJLJLJ|F7F-7FJF7F7L7LJF-7L7-F..L7F7|J
|
||||
|LL-.LF-77.-LJFJF-7F7FJ.||FJFJFJ|LJ|L7LJFJ||||FJL7L7|L7|||L7LJ|L-7|L--7|FJLJ|||L7L7F7FJ|F7||L-7|F-7FJ||L-7F7FJ||L7LJL|LJL-JF7|LL7|.LF|-J|JLJ
|
||||
L.-J.FJ|LF77-FJFJ-||LJF7||L7|.L7L7FJFJF7|FJ|||L7||FJ|FJLJL7|F-JF7||F-7|||F-7||L7L7LJ|L7||||L7FJ||FJ|-FJF7LJ||FJL7L---JF7F7FJ|L-7LJ7--JF|LF7J
|
||||
F7J|F7J7---7FL7L7-LJF-JLJ|FLJF-JFJL7L7||LJ7LJL-JFJL7|L-7|JLJL-7||||L7||LJL7LJL7L7|F-JFJLJ||FJL7||L7L7|FJL--JLJLLL7F-7FJLJ|L7|F7L7JL-J-F--|-J
|
||||
FF.FLJL-7.LJ-LL7|7F-JF7F7|F7FJF7L-7L7LJL----7F--JF7|L-7L7F7F--J||||FJ|L--7L-7FJLLJ|F7L-7FJ|L7FJLJLL7||L------77F7|L7|L--7|FJ||L-J7-L-7|L-J||
|
||||
-|7-|.-7J-7-FJFLJ-L7FJLJLJ||L7||F7|FJF------JL-7FJ|L7|L7|||L--7||||L7L7F7|F-J|-F7FJ||F7|L7L7|L7F--7LJ|F7F---7L7|LJFJL---JLJFJ|JLLJ--7L|-7F--
|
||||
|L7F77FJF-J.||FJF|J||F---7|L-J|LJLJL7L----7F7F-JL7L7L-7|||L---J|||L7||LJLJL-7L7|||FJ||||7|FJL-JL-7L--J||L--7L7||F7L-------7|FJJ7LJ-FJFLL-|J.
|
||||
L-7FJ7F7F|77.77LJJ|LJL--7LJF7FJ-F---JF-7F7LJ||F-7|FJF-J|||F7F-7|||FJL---7F--JFJ|LJL7|||L7|L-7F7F7L-7F7|L7F7L7LJLJ|F------7|LJJLF.|F-777.L-J.
|
||||
||JLJ-L7LJL7-JJ-|-LL-F7-L-7||L-7L---7L7|||F7|LJFJ|L7L-7||LJ|||||LJ|F7F7FJ|F7FJFL7F7||||FJ|F-J|LJL--J||L7||L7L---7|L-----7||JL|LF7|7.LL-7-7.F
|
||||
L|7FL||L|L7||J7.L7LLFJL---J||F7L7F--JFJLJ||||F-JFJFJF7|||F7LJFJL7FJ|LJ||JLJ|L--7||LJLJ|L7|L7FJF7F7F7|L7|LJFJF7F-JL7F-7F7|LJ|-F--L7JFLJJ|||-7
|
||||
.|--FL|FF7L---|..|FFJF---7FJ|||FJL-7FJF-7||LJL-7|FJFJ|||||L--JF7|L7L-7LJF--JF7FJ|L---7L7||FJ|FJ||||||FJL7-L7||L--7|L7||LJJ-L-L7JJJ.|J|F77.||
|
||||
F|.LJ.F-F7J||.L77--L7|F--J|F||LJ|F-JL-JFJLJF---J|L7||LJLJ|F--7|||FJF7|F7L--7|LJ-|F7F-JFLJLJ.LJ-LJ|||||F7|F-J||F7FJ|FJ|||L|J7|7||J.77||LLL7-L
|
||||
FF-77.L7LL--|-|L7-77LJL--7L7||F--JF-7F7L7F7L-7F7L7|L7F7J|LJF-J|||L7||LJL-7FJL7F-J||L--7|.|JF|J-FL||LJLJLJ|F7|||LJFJL7LJ7FJ---77JF|||7|7.|..J
|
||||
|LL777.--F-7J7|J.FJL7LLF-JFJ||L--7|FJ|L7LJL7FJ||FJL7LJL7F77L-7|LJFJ||F---JL-7|L7FJL-7FJJ-L7LJ-77-LJJ|LF--J||||L-7L-7L---77|L|LJ7FLJ|7..F7F||
|
||||
L-J||J.J.LJ|L77.FF--|FL|F7|.LJF--J|L7L7L7F-JL7|LJF7L7F7|||F7-||F-JFJ|L--7LF-J|FJL--7LJ|JF-77FF|F-|LF-FJF-7|||L7FJF-JF-7FJJ7.L-F7-JLL7--7---L
|
||||
L|LL7FF.F|F.|||7L7JJ|FJLJ|L7F-JF-7L7L7L7LJF--JL7FJL-J||LJLJL7||L7FJFL7F7|FL-7|L7F7FJ-L7.JF|F-|J||JF7|L-J.LJ||FJ||L7FJFLJJ.FF7F7JLFJL-..LLLJL
|
||||
.7J-|-F7F77FJJJ7.|JF||LFFJFJL-7|FJFJLL7L7J|F-7FJL7F-7|L7F7F-J||FJL7F-J|LJ7-FJ|FJ||L7J-L7||-7.--J7FJL-JL|7LFLJL7L-7LJ|LJJ|J7|FL--7J7J-J.||L7L
|
||||
.L.7.LLF-JLF|-77-|-FLJ.FL7L-7FJ||FJ|-|L7L7||FJ|F-J|L|L7|||L7.LJL-7|L-7L7-7-|FJL7||FJ.L-L||.|---J|FL-7.FJJ-F---JF-J|FJJJ||FF77.|L|LJ.7F7-|J7J
|
||||
|.FL-F-JJ.FL--JF.L7|JJF|LL7FJL7||L-7F-JL7|LJL-JL7FJFJFJLJL-J.|J|.||J.L7L-7JLJ-L||LJ||JF7|F-FJ-.FF-JFL|7JJ-L7F-7L7F-7-F-JLFJ|LL77LF7|F7LL|L7-
|
||||
F-J|.||7F7LJFL7J..FJ|L7J|.LJFLLJL-7|7|L|||F-7J.||L7L7L-7.||-7J.L-LJ7-.L--J7|JJFLJJ.JJ-L-J-7L.L|7JLF|J||7.F7LJLL-J77JFJ-JLL7.7.--.LJ|LJ--7.||
|
||||
7JJFF-J|-7-7|FJLJ-J.F7..FLL|7FL|J.||LF--JLJFJJ-F|FJFJF7L7--F--||FJJ||-JLJ7LJ..FLL--J|..|-LLJ7L||7LF7L|.--L-7|F|||LJF-JL7.FJL7-L7.F|F7||L|JLJ
|
||||
|JF-J-LJL|.|L-L7..F--7-L7|L-7FL|LFLJFL--7F-JJ-FFJ|-L7||FJJFLJ7.7LL|FJ7F7J|7FF-J|J.|.-J-F--L7L-----|JFLF.L-L-L7|L--|LJ.7-FJJ-|7.FF|7J|F--FJ7J
|
||||
|-LL7|L|FJ-JF|L|77||JJL||FL7L77|-FLJ||LLLJJLL7FL7|F-J||L7FJ7-FJJ--7|-7|F7LL7LL7L-|.-.|-|J7.LJJ|J..L.J-J7.FFF.L|..FJFL-|.LLF--J-FJJ.-LL-7|.F7
|
||||
LF.|-F.-7JJF7.|J|F---7-L--J77JL--J.FLF.J-JF77F77LJL--J|FJJ|L-L|-F7L.7L-L77F7.F7|7|--7JJ.F-L-FF7JFF77.|.--FFJL-LFF77|..L7JLJ..LLL.F7.JL--7F-F
|
||||
FF.J7LL-7.FL77F-|777LJ7||--JJF||FLF-F.L-|FL7-|-LJ-|L|L||JLJL7F----|-J|.LLJLJ7F|LFLJ.-J-F|.|JLJJF|LJF7-7.F||7|J|...FL-7-JJFF-77.L77F|F7||LL.|
|
||||
|LL|-.L-J7JLJ-JJLL7--J----LJ.|L-L-L-L-LJLJ-L-|J.J.|.-JLJ77.LL|J-|-LF-LJ.L-|7LF--|JLJ-L---JJ.FLLLJ7-FJ.L.LLJ-|L|.LJ-LJJLL7.LJLJ-LF-7LJ-JJJ--.
|
||||
5
10/input2.txt
Normal file
5
10/input2.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
-L|F7
|
||||
7S-7|
|
||||
L|7||
|
||||
-L-J|
|
||||
L|-JF
|
||||
@@ -1,6 +1,8 @@
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#define DEFAULT_FILE "input.txt"
|
||||
#define STRBUF_LEN 200
|
||||
|
||||
Reference in New Issue
Block a user