The earliest memory I have of ‘programming’ is in the early/mid 90s when my father brought home a computer from work. We could play games on it … so of course I took the spreadsheet program he used (LOTUS 123, did I date myself with that?) and tried to modify it to print out a helpful message for him. It … halfway worked? At least I could undo it so he could get back to work…

After that, I picked up programming for real in QBASIC (I still have a few of those programs lying around), got my own (junky) Linux desktop from my cousin, tried to learn VBasic (without a Windows machine), and eventually made it to high school… In college, I studied computer science and mathematics, mostly programming in Java/.NET, although with a bit of everything in the mix. A few of my oldest programming posts on this blog are from that time.

After that, on to grad school! Originally, I was going to study computational linguistics, but that fell through. Then programming languages (the school’s specialty). And finally I ended up studying censorship and computer security. That’s about where I am today!

But really, I still have a habit of doing a little bit of everything. Whatever seems interesting at the time!

AoC 2023 Day 16: Reflectinator

Source: Day 16: The Floor Will Be Lava

Full solution for today (spoilers!)

Part 1

You are given a grid of mirrors (|-\/) and empty space (.).

Diagonal mirrors just relect the light.

The horizontal and vertical mirrors are splitters, light hitting them head on (like >|) will split to go both directions. Light hitting edge on will just go through it.

Starting in the top left going East, how many total tiles will a light beam illuminate?

read more...


AoC 2023 Day 14: Spininator

Source: Day 14: Parabolic Reflector Dish

Full solution for today (spoilers!)

Part 1

Given a grid of # and O (among empty . points) where O can move, slide each O as far north as it can. Score each based on how far north it is.

read more...


AoC 2023 Day 12: Question Markinator

Source: Day 12: Hot Springs

Full solution for today (spoilers!)

Part 1

Given a sequence of #.? as on, off, and unknown and a sequence of group sizes, determine how many possible arrangements there are that match the given groups.

More specifically, if you have ???.## 1,2 you need a single # and a set of two ##, there are three possibilities: #...###, .#..###, and ..#.###.

read more...


AoC 2023 Day 7: Pokinator

Source: Day 7: Camel Cards

Full solution for today (spoilers!)

Part 1

Simulate a limited poker game with no suits and break otherwise tied hands lexicographically (AAAA2 beats AKAAA) because the the hands are both four of a kind, the first cards are both A, but the second A beats the K. It doesn’t matter that the first hand’s off card was a 2

Order all hands then calculate the sum of the ordering of hands (1 for best etc) times the bet for each.

read more...