Advent of Code

  • SpinRite v6.1 Release #3
    Guest:
    The 3rd release of SpinRite v6.1 is published and may be obtained by all SpinRite v6.0 owners at the SpinRite v6.1 Pre-Release page. (SpinRite will shortly be officially updated to v6.1 so this page will be renamed.) The primary new feature, and the reason for this release, was the discovery of memory problems in some systems that were affecting SpinRite's operation. So SpinRite now incorporates a built-in test of the system's memory. For the full story, please see this page in the "Pre-Release Announcements & Feedback" forum.
    /Steve.
  • Be sure to checkout “Tips & Tricks”
    Dear Guest Visitor → Once you register and log-in please checkout the “Tips & Tricks” page for some very handy tips!

    /Steve.
  • BootAble – FreeDOS boot testing freeware

    To obtain direct, low-level access to a system's mass storage drives, SpinRite runs under a GRC-customized version of FreeDOS which has been modified to add compatibility with all file systems. In order to run SpinRite it must first be possible to boot FreeDOS.

    GRC's “BootAble” freeware allows anyone to easily create BIOS-bootable media in order to workout and confirm the details of getting a machine to boot FreeDOS through a BIOS. Once the means of doing that has been determined, the media created by SpinRite can be booted and run in the same way.

    The participants here, who have taken the time to share their knowledge and experience, their successes and some frustrations with booting their computers into FreeDOS, have created a valuable knowledgebase which will benefit everyone who follows.

    You may click on the image to the right to obtain your own copy of BootAble. Then use the knowledge and experience documented here to boot your computer(s) into FreeDOS. And please do not hesitate to ask questions – nowhere else can better answers be found.

    (You may permanently close this reminder with the 'X' in the upper right.)

The site is very simple, but fairly advanced. It generates unique inputs for each user, so you can't submit someone else's results as your own. Also, don't assume these are easy-peasy little challenges... Some of them will be fairly straightforward, and some of them will be anything but. I did some of the challenges from last year (after the fact, because that was when I first learned about it) but stopped when I got completely stumped on a maze walking challenge and wasted a couple of days on it without progress.

I think you can still go back and do past years challenges if you want... Here's the maze one I found stumping https://adventofcode.com/2019/day/18 (warning that if you want to do all them in order, they will form a story. Additionally, some of the challenges from 2019 had you building a special virtual machine IntCode parser and you will probably have to solve those problems in order as they build on each other.)

Here's a post about last years progression live as it happened (and then eventually stopped happening) https://www.twit.community/t/advent-of-code-2019/4362/1
 
Last edited:
  • Like
Reactions: Barry Wallis
Thanks for the info @PHolder. My comment about the site looking old was only about the look (which being a text RPG guy, I love). I'm prepared to see how far I get. The good news is that I am retired and have plenty of time and I'm not compulsive so if I need to put it down for a few days and come back to it (or not), I can do that too. We'll see how it goes.
 
Last edited:
I did day 1's problem in less than 30 minutes. It wasn't too tricky as long as you found a non-combinatorial way to do it. Usually the problems are tuned so if you take a good approach, the answer can be calculated quickly, but if you try to brute force it, you will quickly run out of time (or patience) to find an answer. Even more frequently part one of the problem could be brute forced, but part two will combinatorically blow up if you try to brute force it.
 
@PHolder -

By chance did you watch the video after you completed today's task?

I was surprised to see the spoilers in the video! This is not the case for last years original "Advent of Cyber". I recently started working on those while waiting for this years to launch.
 
  • Like
Reactions: Barry Wallis
@PHolder -

By chance did you watch the video after you completed today's task?
Nope. I didn't even know there was one. I completed the first of today's tasks. Actually, I was up after midnight last night and looked at it before I went to sleep. I came up with a design before my brain shut down, remembered and refined it this morning. Now I'm going to practice for my magic class and try not to think about the second half until I am done.
 
As a novice, I love watching or reading other solutions to these challenges after I completed them. It is another great way to learn. As for this specific challenge, John Hammond was today's creator. I like a lot of his ctf walkthroughs. One of the other contributors I like is TCM (The Cyber Mentor). He is a great instructor!
 
@Barry Wallis Day 2 starting soon, but I would encourage you to think of a less brute force solution for day 1. You will not be able to brute force solutions for every problem forthcoming, part of the challenge is to think outside the box. I will give you a hint, but wrap it in a spoiler:
Try thinking if there is a way to do a Big O of 1 O(1) way to tell if a number is in a list of numbers. Big O is a complexity indication, and the least complex (in general) would be O(1). Your nested loop solution is O(n*n) (n squared) because there are two loops to n, one nested in the other. A better solution is O( n ) which is one loop to n, doing a O(1) lookup inside. https://en.wikipedia.org/wiki/Big_O_notation
 
Last edited:
Day 2 wasn't too bad. Mostly a parsing problem I suspect.
If your language of choice has regular expressions, and you know how to use them, that should make short work of it.
 
I have been using Advent of Code to basically learn modern JavaScript. One of the sponsors had templates so I'm using it this year. You can see my code here.

I haven't looked at Day 2 yet. PHolder's hint tells me I'll be running RegexBuddy today.
 
Day 3 isn't too tricky. I would say the biggest thing is to:
use mod to cause the horizontal repeat and to generalize your part 1 solver so it can be repurposed easily for part 2.