From b3066997c551166eada297ad8919fde696414dad Mon Sep 17 00:00:00 2001 From: "C. McEnroe" Date: Wed, 11 Dec 2019 20:19:27 -0500 Subject: Solve day 10 part 1 --- 2019/day10.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 2019/day10.c (limited to '2019') diff --git a/2019/day10.c b/2019/day10.c new file mode 100644 index 0000000..dbc2352 --- /dev/null +++ b/2019/day10.c @@ -0,0 +1,57 @@ +#include +#include + +static struct Point { + int x, y; +} Point(int x, int y) { + return (struct Point) { x, y }; +} + +static int eq(struct Point a, struct Point b) { + return a.x == b.x && a.y == b.y; +} + +static struct Point sub(struct Point a, struct Point b) { + return Point(a.x - b.x, a.y - b.y); +} + +static struct Point reduce(struct Point p) { + int max = (abs(p.x) > abs(p.y) ? abs(p.x) : abs(p.y)); + for (int i = max; i > 1; --i) { + if (p.x / i * i != p.x) continue; + if (p.y / i * i != p.y) continue; + return Point(p.x / i, p.y / i); + } + return p; +} + +int main(void) { + struct Point ps[2048]; + size_t len = 0; + int y = 0, x = 0; + int ch; + while (EOF != (ch = getchar())) { + switch (ch) { + break; case '.': x++; + break; case '#': ps[len++] = Point(x++, y); + break; case '\n': y++; x = 0; + } + } + + size_t max = 0; + for (size_t i = 0; i < len; ++i) { + struct Point ds[2048]; + size_t dlen = 0; + for (size_t j = 0; j < len; ++j) { + if (j == i) continue; + struct Point a = reduce(sub(ps[j], ps[i])); + size_t d; + for (d = 0; d < dlen; ++d) { + if (eq(ds[d], a)) break; + } + if (d == dlen) ds[dlen++] = a; + } + if (dlen > max) max = dlen; + } + printf("%zu\n", max); +} -- cgit 1.4.1 ue='range'>range
Commit message (Expand)Author
2019-02-20Match make targets as TagJune McEnroe
2019-02-20Use $PWD in html.sh to pass absolute path to manJune McEnroe
2019-02-20Factor out html.sh and produce html for all sourcesJune McEnroe
2019-02-20Add Dirk Gently's Holistic Detective AgencyJune McEnroe
2019-02-20Move /opt/pkg after /usr in PATHJune McEnroe
2019-02-20Set man_hard_wrap in nvimJune McEnroe
2019-02-18Use hi -o anchor in upJune McEnroe
2019-02-18Don't match nested parentheses in Tag for CJune McEnroe
2019-02-18Match whitespace between * [] {}June McEnroe
2019-02-18Fix function-like #define regexJune McEnroe
2019-02-18Match Tag in RustJune McEnroe
2019-02-18Match sh functions as TagJune McEnroe
2019-02-18Match Sh and Ss as Tag in mdocJune McEnroe
2019-02-18Match statics and typedefs as TagJune McEnroe
2019-02-18Clean up htmlHeaderJune McEnroe
2019-02-18Remove hi line numberingJune McEnroe
2019-02-18Add Tag class to hiJune McEnroe
2019-02-17Generate HTML with hi -n -f html -o anchorJune McEnroe
2019-02-17Add hi -f html -o anchor for line number linksJune McEnroe
2019-02-17Simplify temp trap in upJune McEnroe
2019-02-17Add line numbers to hiJune McEnroe
2019-02-17Always split spans after newlinesJune McEnroe
2019-02-15Color format specifiers light cyan in vimJune McEnroe
2019-02-15Highlight Interp as yellowJune McEnroe
2019-02-15Highlight strings in sh command substitutionsJune McEnroe
2019-02-15Add nmap gpJune McEnroe
2019-02-14Avoid newline when copying URL to pasteboardJune McEnroe
2019-02-13Add forgotten "sixth" book of H2G2June McEnroe