So this post is going to be the post that was meant to go up several hours ago when the Internet connection I'm working off was offline.
Finally managed to wake up at the planned time of 7:10 today. The hope is that I'd be able to wake myself up properly and get breakfast finished before at least one other person so I stop being the reason we go to the labs late. After having seen everyone else regularly buy the pancakes and appear to enjoy them, I tried the same. Unfortunately, I was wise enough to try and spend precisely $25, I ordered fried eggs too and couldn't finish it in a reasonable amount of time, holding back everyone and yet again being the reason we got to the labs late.
Yet another practice paper (the third, if my counting ability doesn't fail me). In my opinion, this exam was harder than yesterday's, not only because I didn't do terribly well, but also because trying to understand the solutions to two of the three harder problems takes a fair while longer than yesterday's exam. The full feedback problem was certainly more difficult than the usual full feedback problems that I've grown used to. Most of the time, the full feedback problem requires some reasonably trivial algorithm to be implemented, not needing too much thought to go into arriving at an algorithm that solves the task (since feedback is usually to assist competitors produce codes with less errors, rather than assist competitors in solving the task on an algorithmic level). Though in terms of the algorithm, today's full feedback task wasn't as too mentally taxing, it had quite a few gotchas that took a while to figure out. Given that the task is full feedback, one would know upon submission that they didn't submit a correct solution and take a while longer than usual to solve what should be an easy problem [taking away precious time to work on more difficult tasks]. That leads on to the other tasks, which had me quite entirely stumped for a long time. Jarrah mentioned how we were going to hate ourselves during the problem session, and for good reason too.
Having collectively discussed the solutions to the problems that had completely confused us only a few hours before, we quickly arrived at an incredibly simple solution to one of harder tasks. Not only was the solution ridiculously simple, but the line of logic that we had to follow was quite obvious once a small observation has been made. Then again, that ability to make the small observations is what differs the good informaticians from the extraordinary informaticians. The other two of the more difficult tasks required less epiphanies and more deep thought and number crunching. This is the kind of deep thought and number crunching that would have the entire team sitting at a table for extended periods of silent meditation that would be interrupted by a magnificent eruption of discussion, shortly followed by further silence. In the end, we came up with an algorithm for solving one of the two unsolved tasks (albeit deeply confusing and lacking an elegant proof) and a questionable solution to the last one (questionable in that it makes sense and should be algorithmically correct, but implementation-wise is a little half-baked).
After the extended problem session (which [since I haven't explained it anywhere else yet] is a session where we all sit down and discuss ideas and potential solutions to problems that were in the day's exam [or any exam for that matter]), we went down to the labs for a shortened lab session (which is where we implement/code the solutions that we discussed in the problem session), where I managed to code up the solution to the task that required an epiphany. I had a stab at the deeply confusing task, but didn't have enough time to finish ironing out the errors.
Butter chicken for dinner (and kebab for lunch). Good stuff with rice. Table conversation was good; we talked about topics such as the ISSC (International Schools' Software Competition), binary search, the expected number of rolls of a dice required to get a number that isn't 6, and whether or not it was possible to make a proper random number generator (i.e. one that has a perfectly equal chance of getting each of its possible values), given a random number generator that gives random numbers of a different range (so something like "given a perfectly random die, create a series of steps that utilises the die to generate a random number between 1 and 5 inclusive" [a la the previously mentioned topic). Truly riveting material.
After dinner, we went back into our rooms, with everyone going to sleep much earlier than usual. Since the Internet connection was offline during this time (which probably explains the early sleeping times), I didn't have a chance to write up this blog post at the time. Instead I thought it would be fun to implement that solution to the minesweeper problem that I so fondly proclaimed in my last post. By the time it was 1am, I had gotten so irritatingly close to a completed solution, but stopped when I realised I was keeping Evgeny awake with the light, loud typing and the TV that I had on for background entertainment so I put it off till a later time.
So as far as I can remember, that was all that happened yesterday. With regards to this particular post, I have a strong feeling that I was being heavily distracted earlier on in the post by a TV, so much of it may not make as much (or any) sense. I'd proofread it, but it probably makes a more interesting read for everyone if I don't.
Flying soon.
-ken
No comments:
Post a Comment