Compare commits
No commits in common. "67cd62713851b1b671872365fbcf62e059ba02ef" and "6012f7757c5bdb07993dab3f167bf5c8a67200de" have entirely different histories.
67cd627138
...
6012f7757c
|
@ -1,3 +1 @@
|
||||||
/cookie
|
/cookie
|
||||||
/*/sol
|
|
||||||
/bin/
|
|
||||||
|
|
4
cron.sh
4
cron.sh
|
@ -2,9 +2,9 @@
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
# install me in your crontab!
|
# install me in your crontab!
|
||||||
# 0 5 1-25 12 * $HOME/adventofcode2024/cron.sh auto
|
# 0 5 1-25 12 * $HOME/adventofcode2023/cron.sh auto
|
||||||
|
|
||||||
year=2024
|
year=2023
|
||||||
root=~/adventofcode${year}
|
root=~/adventofcode${year}
|
||||||
|
|
||||||
getinput() {
|
getinput() {
|
||||||
|
|
1370
day05/input
1370
day05/input
File diff suppressed because it is too large
Load Diff
|
@ -1,28 +0,0 @@
|
||||||
47|53
|
|
||||||
97|13
|
|
||||||
97|61
|
|
||||||
97|47
|
|
||||||
75|29
|
|
||||||
61|13
|
|
||||||
75|53
|
|
||||||
29|13
|
|
||||||
97|29
|
|
||||||
53|29
|
|
||||||
61|53
|
|
||||||
97|53
|
|
||||||
61|29
|
|
||||||
47|13
|
|
||||||
75|47
|
|
||||||
97|75
|
|
||||||
47|61
|
|
||||||
75|61
|
|
||||||
47|29
|
|
||||||
75|13
|
|
||||||
53|13
|
|
||||||
|
|
||||||
75,47,61,53,29
|
|
||||||
97,61,53,29,13
|
|
||||||
75,29,13
|
|
||||||
75,97,47,61,53
|
|
||||||
61,13,29
|
|
||||||
97,13,75,29,47
|
|
|
@ -1,3 +0,0 @@
|
||||||
75,47,<em>61</em>,53,29
|
|
||||||
97,61,<em>53</em>,29,13
|
|
||||||
75,<em>29</em>,13
|
|
77
day05/sol.py
77
day05/sol.py
|
@ -1,77 +0,0 @@
|
||||||
import functools
|
|
||||||
|
|
||||||
def parse(file):
|
|
||||||
rules = []
|
|
||||||
for line in file:
|
|
||||||
line = line.strip()
|
|
||||||
if line == "":
|
|
||||||
break
|
|
||||||
a, _, b = line.partition('|')
|
|
||||||
rules.append((a,b))
|
|
||||||
updates = []
|
|
||||||
for line in file:
|
|
||||||
line = line.strip()
|
|
||||||
updates.append(line.split(','))
|
|
||||||
return rules, updates
|
|
||||||
|
|
||||||
def solve(file):
|
|
||||||
rules, updates = parse(file)
|
|
||||||
rules = set(rules)
|
|
||||||
def isvalid(pages):
|
|
||||||
for i in range(len(pages)):
|
|
||||||
p = pages[i]
|
|
||||||
for g in pages[i+1:]:
|
|
||||||
if (g,p) in rules:
|
|
||||||
return False
|
|
||||||
return True
|
|
||||||
|
|
||||||
# part 1
|
|
||||||
t = 0
|
|
||||||
invalid = []
|
|
||||||
for pages in updates:
|
|
||||||
if isvalid(pages):
|
|
||||||
print(pages)
|
|
||||||
t += int(pages[len(pages)//2])
|
|
||||||
else:
|
|
||||||
invalid.append(pages)
|
|
||||||
print(t)
|
|
||||||
|
|
||||||
# part 2: select applicable rules and form a graph
|
|
||||||
# find the root node
|
|
||||||
# do a topological sort by doing a DFS of the graph
|
|
||||||
t = 0
|
|
||||||
for pages in invalid:
|
|
||||||
# select rules
|
|
||||||
rules2 = [(p,g) for p,g in rules if p in pages and g in pages]
|
|
||||||
#print(pages, rules2)
|
|
||||||
|
|
||||||
# find root node
|
|
||||||
S = set(p for p,g in rules2)
|
|
||||||
E = set(g for p,g in rules2)
|
|
||||||
top = next(iter(S-E))
|
|
||||||
|
|
||||||
# topological sort
|
|
||||||
l = []
|
|
||||||
seen = set()
|
|
||||||
def visit(node):
|
|
||||||
if node in seen: return
|
|
||||||
seen.add(node)
|
|
||||||
for p,g in rules2:
|
|
||||||
if p == node and g not in seen:
|
|
||||||
visit(g)
|
|
||||||
l.append(node)
|
|
||||||
visit(top)
|
|
||||||
l.reverse()
|
|
||||||
|
|
||||||
# sanity check
|
|
||||||
assert len(l) == len(pages)
|
|
||||||
assert isvalid(l)
|
|
||||||
print(l)
|
|
||||||
|
|
||||||
# add middle number to total
|
|
||||||
t += int(l[len(l)//2])
|
|
||||||
print(t)
|
|
||||||
|
|
||||||
|
|
||||||
solve(open("sample1.in"))
|
|
||||||
solve(open("input"))
|
|
|
@ -1,2 +0,0 @@
|
||||||
CFLAGS=-O2 -std=c99 -ggdb -Wall -Wextra
|
|
||||||
all: sol
|
|
130
day06/input
130
day06/input
|
@ -1,130 +0,0 @@
|
||||||
....#.....#......#...............................#...........#.......#.....#................#...#....#....#................#..#.#.
|
|
||||||
...................................................................................#...........#............#.....................
|
|
||||||
..........#..............#.................................................#..............#.......................................
|
|
||||||
....................#...............#...#.....................#..............................#....#.............................#.
|
|
||||||
...............................##...............................................................#............#....................
|
|
||||||
................#...........#................#...............#....#.......#.............................#..........#...........#..
|
|
||||||
...........................#................................................#.##..................#.............#........#........
|
|
||||||
......#......#.....#..........#.......................#..........#.............#.....................#........#....#..............
|
|
||||||
..................................................#..................................#....#.........#...........#..............#..
|
|
||||||
..................................#..................#..........................................#.........#....................#..
|
|
||||||
#.................#....................#...........#....................................#......................#..................
|
|
||||||
.......#..........................................................................................................#...............
|
|
||||||
...............##.............................#...#.....................#..........................#.......................#......
|
|
||||||
...#.......................................................#..........................................#...................#..#....
|
|
||||||
.......#...#.......#.#.............#.....#.##.........................#...........................................................
|
|
||||||
#................#.........#.......................##............................................#...#.....#........#.......#.....
|
|
||||||
#......##..............................................................#......#....#....#....#.#...............#............#..#..
|
|
||||||
.....#...............................##.......................................#.......#......#............................#.....#.
|
|
||||||
.........#......#...............................#.....#.....#...................##......#.........................................
|
|
||||||
.#.................................................#...............#........#............................#........................
|
|
||||||
#.........#.........................................#.......................#..............#......................#...........#...
|
|
||||||
..........................................##.............................................................##..#.......#............
|
|
||||||
...#.........................#...........................................#........#...............................................
|
|
||||||
#..................#............#.................................................................#.#....................#....#..#
|
|
||||||
...................#.....................................#.#.........#.............#......#............................##.........
|
|
||||||
....#..............................................................##.......................................................#....#
|
|
||||||
.....................#.....#.............................................#.......................#..................#.............
|
|
||||||
...........#.......................................#................#.........#...............#.#...........#.....#.....#........#
|
|
||||||
.#..#.................#....#...............................#.................................................##...................
|
|
||||||
..#.....#......#..........#...................#..#..................................................#.......#...#.................
|
|
||||||
.............................................................#.......................#..........#.....#...................#.......
|
|
||||||
.......#.......................#.#....#...#.....##.......................#.................................................#......
|
|
||||||
.................#.....................#...............................................................#..#.......................
|
|
||||||
...#.................#.#..................................................##......................................#..#............
|
|
||||||
#........................................................#...#.........#................#.#.......................................
|
|
||||||
.................#........#.#........................#.#..................................#.......................................
|
|
||||||
..........#..#......#..................#.........................#................................#...............................
|
|
||||||
.............................................................................................#....................................
|
|
||||||
.....................#...........#........##.....#.........................#..............................#.....#....#............
|
|
||||||
..#........#.........#.....................................................#......................................................
|
|
||||||
...................................#...................#............#.............#...........................#...................
|
|
||||||
....#.........................................................#................................#......#...#..#....................
|
|
||||||
................................................................................#..#.......#..........................#....#......
|
|
||||||
#...........................................................................#........................#............................
|
|
||||||
..#..............#..........#...#..........................................................#......................................
|
|
||||||
.......................................................#.................#.#....#.................#..........#....#...............
|
|
||||||
..................................................................................................................................
|
|
||||||
.................#.........................................................#..........#.........#.........#.................#.....
|
|
||||||
....................#........#...................#................#...#....................#..............#................#......
|
|
||||||
...#.............##........................................#.........#.................#...........#.........#....................
|
|
||||||
................#............#...........#...............#.....................................#...........................#......
|
|
||||||
....................................................#...........#..............................#..........#...........#...........
|
|
||||||
.........#..............#................................#.............#......................................#.........#...#.....
|
|
||||||
..#..#.........................................#.............................#....................................................
|
|
||||||
.#............................##...#..........#............#..#.........................#......................#...#..............
|
|
||||||
........#.....#..............#..................................................#...#......................#....#..............#..
|
|
||||||
...............................................#.........#..................#............#.............................#..........
|
|
||||||
..................................................................................................#....#..........................
|
|
||||||
..............#..............................................................#....................................................
|
|
||||||
.....#....#.....................#......................#...........#...#..#.............#.......................#.................
|
|
||||||
.............................#...#..#...........................#............................................................#....
|
|
||||||
.............................................#...............................#...................................................#
|
|
||||||
..................................................................#......#....#.......................#.......#........#..........
|
|
||||||
..................#.#.........................................................................................##.......#........#.
|
|
||||||
.............................#.......................#.......................................##...................................
|
|
||||||
.....#.............................................................................................................#.#............
|
|
||||||
...............##.........#..#.....#...............#....................#.................................#.#....#................
|
|
||||||
................#......................................................................#...............#...................#......
|
|
||||||
.................#..............#.................................................................................................
|
|
||||||
............#...#...........................................................................................#......#..............
|
|
||||||
..#.....................................................................#.....#.#.#......#....#..........#........................
|
|
||||||
.#........#.............................#.....................#.....................#....#........................................
|
|
||||||
.......................................................................................................#..........................
|
|
||||||
...#........#..................................................#.........................................................#......#.
|
|
||||||
.......#.......#..#.................................................................................................#.............
|
|
||||||
..............................#..#..........................#..#..................#.............#.................................
|
|
||||||
..................#...#.............................................#...................#.......#...............#.................
|
|
||||||
...#.......#........#.....................................#...........#.................................................#.........
|
|
||||||
.#.............#....................................#........................................................##............#...#..
|
|
||||||
...............#.....#....................................................................................#....#................#.
|
|
||||||
....#...........................................................#.....#..............................................#............
|
|
||||||
.........#..........#...........................#.......................................#....#....................#...............
|
|
||||||
...............................................................#..........#......^...............................................#
|
|
||||||
#..........................#.....................#..............................#..............................#..................
|
|
||||||
...................#.....#......#...........#........#............#.......#.......#...............................................
|
|
||||||
.....#.....#.............................................................#..............#........#..........................#....#
|
|
||||||
............#...............................................................#.............#......................#................
|
|
||||||
.....#...............................................##........................................#.......#......#...................
|
|
||||||
.........................................#........................................................................................
|
|
||||||
..........................#...............................#............#............................#.....#.......................
|
|
||||||
...##.........#......#.....#...............................................................#........#.............................
|
|
||||||
......#...............#.#......................#.......#..............................#...#.........#.........#..#.........#......
|
|
||||||
....#......#....#........#.#.............................#......................................................#.....#...........
|
|
||||||
.....#.............#.....................#...#...............#....................................................................
|
|
||||||
......#............#............#.#............#....................#.............................................................
|
|
||||||
.............#..................................................#....................#.............#.......#.............#........
|
|
||||||
.............................................#......................................................................#.............
|
|
||||||
...............................#............................................................#................#...................#
|
|
||||||
............#.....#....................................................................................................#.#........
|
|
||||||
.........................#....................#...##.......#............#..#.................................#......#.............
|
|
||||||
....#......................#.....................#...........#.........................................#......#.#.................
|
|
||||||
..................................................................#..........................#......................#.............
|
|
||||||
.......................#......#..............................................................................#....................
|
|
||||||
.......#.................#...............................##...............................................#.............#.........
|
|
||||||
.#..............#.....................................................................................................#...........
|
|
||||||
.......##.................#................#.#...#......................................#...............#...#.....................
|
|
||||||
.............##......................................................#....................................#..........#............
|
|
||||||
....................................#............#............#............#.....................................#................
|
|
||||||
................#..#............................#..............................................#.....#...................#......#.
|
|
||||||
....................#....#......#..................#................#.............................................................
|
|
||||||
...............##...............#...#..........................#......#...............#..#................#.....#.............#...
|
|
||||||
...........#..........#..........#..#.........#....#...#......#..............#................#....#..#...........................
|
|
||||||
#.....................#..#...................................#...#..............................#......#.#.#......................
|
|
||||||
............##...................#..#.............................................................................................
|
|
||||||
..............................................#.#.......................#.................#....#..................#.......#.......
|
|
||||||
....#................#......#........................................................#........#..............#....................
|
|
||||||
.........#.#...............#............................###...........#...........................................................
|
|
||||||
.........#.................................................................................#......#...#..............#......#.....
|
|
||||||
....#....#......#.#.........#..........#...............#.........#............##.............#..#............................#....
|
|
||||||
....#..#...#.....#...........................#.#.......................................#...#.....................#............#..#
|
|
||||||
...........#............................#........#...#......#...............................................#...#.................
|
|
||||||
..#...............................................................#..............................................#.........#......
|
|
||||||
...................#.....................................#....................................#.#.#............#............#.....
|
|
||||||
.....#.................#...........................##.................#..#........................................................
|
|
||||||
...#.......#...................................#.............................#...........#......##.#...#.........#.#...........#..
|
|
||||||
.#.............#......#..#...#......................................................#..............#.............#.#..............
|
|
||||||
.......................#............#...................#.....................#.......................#.............#..#......#...
|
|
||||||
......................#..#.#.......#........#....#.............#.........#..............................#.#..........#........#...
|
|
||||||
.................#.............#..#..........#...#.........#..................................#..#.............#................#.
|
|
||||||
.#..................................#....#...........................................#..............................#...#.........
|
|
|
@ -1,10 +0,0 @@
|
||||||
....#.....
|
|
||||||
.........#
|
|
||||||
..........
|
|
||||||
..#.......
|
|
||||||
.......#..
|
|
||||||
..........
|
|
||||||
.#..^.....
|
|
||||||
........#.
|
|
||||||
#.........
|
|
||||||
......#...
|
|
|
@ -1,10 +0,0 @@
|
||||||
....#.....
|
|
||||||
....^....#
|
|
||||||
..........
|
|
||||||
..#.......
|
|
||||||
.......#..
|
|
||||||
..........
|
|
||||||
.#........
|
|
||||||
........#.
|
|
||||||
#.........
|
|
||||||
......#...
|
|
|
@ -1,10 +0,0 @@
|
||||||
....#.....
|
|
||||||
........>#
|
|
||||||
..........
|
|
||||||
..#.......
|
|
||||||
.......#..
|
|
||||||
..........
|
|
||||||
.#........
|
|
||||||
........#.
|
|
||||||
#.........
|
|
||||||
......#...
|
|
|
@ -1,10 +0,0 @@
|
||||||
....#.....
|
|
||||||
.........#
|
|
||||||
..........
|
|
||||||
..#.......
|
|
||||||
.......#..
|
|
||||||
..........
|
|
||||||
.#......v.
|
|
||||||
........#.
|
|
||||||
#.........
|
|
||||||
......#...
|
|
|
@ -1,10 +0,0 @@
|
||||||
....#.....
|
|
||||||
.........#
|
|
||||||
..........
|
|
||||||
..#.......
|
|
||||||
.......#..
|
|
||||||
..........
|
|
||||||
.#........
|
|
||||||
........#.
|
|
||||||
#.........
|
|
||||||
......#v..
|
|
|
@ -1,10 +0,0 @@
|
||||||
....#.....
|
|
||||||
....XXXXX#
|
|
||||||
....X...X.
|
|
||||||
..#.X...X.
|
|
||||||
..XXXXX#X.
|
|
||||||
..X.X.X.X.
|
|
||||||
.#XXXXXXX.
|
|
||||||
.XXXXXXX#.
|
|
||||||
#XXXXXXX..
|
|
||||||
......#X..
|
|
214
day06/sol.c
214
day06/sol.c
|
@ -1,214 +0,0 @@
|
||||||
#include <stdlib.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <limits.h>
|
|
||||||
#include <stdbool.h>
|
|
||||||
|
|
||||||
struct grid {
|
|
||||||
char** A;
|
|
||||||
int x, y;
|
|
||||||
};
|
|
||||||
|
|
||||||
void* xrealloc(void* ptr, size_t size) {
|
|
||||||
if (size == 0) {
|
|
||||||
size = 1;
|
|
||||||
}
|
|
||||||
ptr = realloc(ptr, size);
|
|
||||||
if (ptr == NULL) {
|
|
||||||
fprintf(stderr, "fatal: alloc(%zd) failed", size);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
return ptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
int readfile(const char* filename, struct grid* out) {
|
|
||||||
FILE *fp = fopen(filename, "r");
|
|
||||||
if (fp == NULL) {
|
|
||||||
perror("fopen");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
int len = 0;
|
|
||||||
int cap = 100;
|
|
||||||
char* data = xrealloc(NULL, cap);
|
|
||||||
for (;;) {
|
|
||||||
if (len >= cap) {
|
|
||||||
cap *= 2;
|
|
||||||
data = xrealloc(data, cap);
|
|
||||||
}
|
|
||||||
int c = fgetc(fp);
|
|
||||||
if (c == -1) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
data[len] = c;
|
|
||||||
len++;
|
|
||||||
}
|
|
||||||
int i, nl=0;
|
|
||||||
for (i = 0; i < len; i++) {
|
|
||||||
if (data[i] == '\n') {
|
|
||||||
nl++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// split on newlines
|
|
||||||
char** lines = xrealloc(NULL, nl * sizeof(char*));
|
|
||||||
char* p = data;
|
|
||||||
int mincol = INT_MAX;
|
|
||||||
i = 0;
|
|
||||||
while (p != NULL && p < data+len) {
|
|
||||||
lines[i++] = p;
|
|
||||||
char* q = memchr(p, '\n', (data+len)-p);
|
|
||||||
if (!q) {
|
|
||||||
break; // TODO: final line?
|
|
||||||
}
|
|
||||||
int col = q - p;
|
|
||||||
if (mincol > col && col > 0) {
|
|
||||||
mincol = col;
|
|
||||||
}
|
|
||||||
p = q+1; // skip newline
|
|
||||||
}
|
|
||||||
|
|
||||||
out->A = lines;
|
|
||||||
out->x = mincol;
|
|
||||||
out->y = nl;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool inbounds(struct grid *g, int x, int y) {
|
|
||||||
return (0 <= x && x < g->x && 0 <= y && y < g->y);
|
|
||||||
}
|
|
||||||
|
|
||||||
struct step_r { int x, y, dx, dy; bool ok; };
|
|
||||||
struct step_r step(struct grid *g, int x, int y, int dx, int dy) {
|
|
||||||
struct step_r r = {0};
|
|
||||||
if (!inbounds(g, x, y)) {
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
// if there is nothing in front of you, step forward
|
|
||||||
if (!inbounds(g, x+dx, y+dy) || g->A[y+dy][x+dx] != '#') {
|
|
||||||
r.x = x+dx;
|
|
||||||
r.y = y+dy;
|
|
||||||
r.dx = dx;
|
|
||||||
r.dy = dy;
|
|
||||||
r.ok = true;
|
|
||||||
return r;
|
|
||||||
} else {
|
|
||||||
// if there is something in front of you, turn right
|
|
||||||
r.x = x;
|
|
||||||
r.y = y;
|
|
||||||
r.dx = -dy;
|
|
||||||
r.dy = dx;
|
|
||||||
r.ok = true;
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
struct point { int x, y; };
|
|
||||||
struct point startingPoint(struct grid *g) {
|
|
||||||
int x, y;
|
|
||||||
for (y = 0; y < g->y; y++)
|
|
||||||
for (x = 0; x < g->x; x++) {
|
|
||||||
if (g->A[y][x] == '^') {
|
|
||||||
struct point r = {x, y};
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
struct point r = {-1,-1};
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
int solve(struct grid *g) {
|
|
||||||
struct point start = startingPoint(g);
|
|
||||||
int x = start.x, y = start.y;
|
|
||||||
int count = 0;
|
|
||||||
int dx = 0, dy = -1; // up
|
|
||||||
while(inbounds(g, x, y)) {
|
|
||||||
if (g->A[y][x] != 'x') {
|
|
||||||
count++;
|
|
||||||
}
|
|
||||||
g->A[y][x] = 'x';
|
|
||||||
|
|
||||||
struct step_r r = step(g, x, y, dx, dy);
|
|
||||||
if (r.ok != true) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
x = r.x;
|
|
||||||
y = r.y;
|
|
||||||
dx = r.dx;
|
|
||||||
dy = r.dy;
|
|
||||||
}
|
|
||||||
g->A[start.y][start.x] = '^';
|
|
||||||
printf("%d\n", count);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// returns whether the chosen grid will cause the guard to get stuck in a loop
|
|
||||||
bool loops(struct grid *g, struct point start, uint16_t* state) {
|
|
||||||
int x = start.x;
|
|
||||||
int y = start.y;
|
|
||||||
int dx = 0, dy = -1; // up
|
|
||||||
int stride = g->x;
|
|
||||||
//printf("loops(%d,%d)\n", x,y);
|
|
||||||
while(inbounds(g, x, y)) {
|
|
||||||
uint16_t dir = 15;
|
|
||||||
if (dx == 1) { dir = 1; }
|
|
||||||
else if (dx == -1) { dir = 2; }
|
|
||||||
else if (dy == 1) { dir = 4; }
|
|
||||||
else if (dy == -1) { dir = 8; }
|
|
||||||
|
|
||||||
uint16_t *s = &state[y*stride + x];
|
|
||||||
if ((*s & dir) != 0) {
|
|
||||||
// revisited a state, loop!
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
*s |= dir;
|
|
||||||
|
|
||||||
struct step_r r = step(g, x, y, dx, dy);
|
|
||||||
if (r.ok != true) {
|
|
||||||
// step failed, no loop
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
x = r.x;
|
|
||||||
y = r.y;
|
|
||||||
dx = r.dx;
|
|
||||||
dy = r.dy;
|
|
||||||
}
|
|
||||||
// left the map, no loop
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int solve2(struct grid *g) {
|
|
||||||
int count = 0;
|
|
||||||
int ox, oy; // obstacle coords
|
|
||||||
struct point p = startingPoint(g);
|
|
||||||
size_t state_size = g->x * g->y * sizeof(uint16_t);
|
|
||||||
uint16_t *state = xrealloc(NULL, state_size);
|
|
||||||
for (oy = 0; oy < g->y; oy++)
|
|
||||||
for (ox = 0; ox < g->x; ox++) {
|
|
||||||
int c = g->A[oy][ox];
|
|
||||||
if (c != '#' && c != '^') {
|
|
||||||
g->A[oy][ox] = '#';
|
|
||||||
memset(state, 0, state_size);
|
|
||||||
if (loops(g, p, state)) {
|
|
||||||
count++;
|
|
||||||
}
|
|
||||||
g->A[oy][ox] = c;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
free(state);
|
|
||||||
printf("%d\n", count);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int main() {
|
|
||||||
struct grid g;
|
|
||||||
//readfile("sample1.in", &g);
|
|
||||||
readfile("input", &g);
|
|
||||||
printf("%d %d\n", g.x, g.y);
|
|
||||||
solve(&g);
|
|
||||||
//printf("%s", g.A[0]);
|
|
||||||
solve2(&g);
|
|
||||||
}
|
|
Loading…
Reference in New Issue