Category → CS
College Emails
(Frivolous blog content, posted as part of a daily posting streak I have openly committed to; standard disclaimers apply)
Out of boredom and curiosity, I graphed how many emails colleges sent me, excluding the colleges I actually applied to. I am being extremely polite and just calling them emails. I’ve wanted to make this for a long time, but it wasn’t until I saw this post about an email experiment on waxy.org/links that I understood which tools I could use to quantify my emails. (And then I actually made it and procrastinated posting it here for two months. If you look at my GitHub page or activity you might have seen it already, though. Oops.)
I don’t think the results were expected. Other than saying that, I leave the interpretation up to the reader because I’m on a tight blogging schedule. Cool? Cool.
Step-by-step instructions:
Adventures in Unicode Forensics
Puzzle 46 / Fillomino [LITS + Extra Region + Walls + Anti-Walls + Inequality + Tapa + Masyu]
5:27 PM phenomist: do you use gridderface to make pretty puzzles?
…
5:52 PM phenomist: actually nvm excel is probably easier lol
Okay I’m sorry this is a horrible puzzle where the rules don’t make sense and I didn’t even get it testsolved. I just wanted an image to concisely demonstrate the capabilities of gridderface, my puzzle marking and creation program, for the project homepage, after somebody expressed interest in using the program to write a puzzle. Then I got tremendously carried away.
C/C++ to D
Some notes.
I’m assuming you want to use D largely, but not entirely, for competitive programming. That’s me right now.
Basics
Syntax is very similar. Function definitions, semicolon-terminated
statements, variable declarations, and so on. You can declare
int main() {...}
or void main() {...}
or
something with arguments.
Basic types like bool
and int
and
double
are all there. Wonderfully, long
is 64
bits. Instead of unsigned
whatever, just prefix a
u
, e.g. uint
.
Arithmetic operators and bit operators are all there too, including
unsigned right shift >>>
. Although ^
is still xor, D has exponentiation as ^^
. Sadly,
%
is still same-sign remainder; there’s no true mod.
import std.stdio;
Casts look like cast(int) x;
Control Flow
if
, while
, for
,
do
, and even switch
all work as you’d expect,
along with break
and continue
.
foreach
is the nice addition though. Not only can you
iterate over arrays and stuff, but range loops go like:
HOJ 226: CP (中)
This post was written in Traditional Mandarin Chinese for my fellow competitive programmers in Taiwan.
有關的題目出現於NPSC 2014 高中組決賽pD。
前置要求:treap (split, merge)跟在上面實作區段操作(請參考資訊枝幹)。
這裡沒有完整的解答code,因為AC是要用血汗換來的才值得 :-)
Treap
我討厭單字母l
的變數名稱(跟1
太像了。我沒有被這個雷過,這只是自己對自己程式碼可讀性的要求),所以我的子樹叫做lc
(left
child),rc
(right child)。
struct Treap {
* lc;
Treap * rc;
Treap unsigned pri;
char val;
int size;
};
int size(Treap * a) { return a ? a->size : 0; }
void pull(Treap * a) {
if (a) a->size = 1 + size(a->lc) + size(a->rc);
}
[IOI 2014 Part 2] One Line to Solve Them All
I started trying to sleep at 9 the night before the contest, tossed and turned in bed until 10, then fell asleep and got up at 3:35 in the morning. Blah. At that point, I went to the bathroom and applied some chapstick before trying to go back to sleep until 6. After breakfast, I grabbed a few minutes of sleep on the bus to the convention center where our contest would be, then slept on a sofa outside the actual contest hall alongside most of the rest of our team as we waited for a very long time until it was okay for us to enter. Competitions really mess with one’s sleep schedule.
Then, much too soon, we could enter. Day 1 of the contest was about to start.
The laptops were as yesterday, although they were protected with a white screensaver that indicated my name and ID as well as a countdown to the start of the contest. I was glad to see that my mousepad and all my writing utensils had survived without me. Somebody had the sense of humor to project an online stopwatch with an animated bomb fuse onto the screens to indicate the remaining time, which, once again, there was a lot of.
I conferred briefly with Paul (TZW (alphaveros (?))) about vim
settings for a bit, but there were still fifteen minutes left or so. I
idly stretched, practiced typing my .vimrc
on an imaginary
keyboard, and watched as the US dude two tables to my left unplugged his
laptop’s mouse and rearranged absolutely everything on his table using
the surface under his chair as swap space. (Well, that was how I
mentally described it at the time, pending further revelations. (hint
hint))
Then it began.
[IOI 2014 Part 0] Waiting
Yes, I know day 1 of the contest already ended and is probably a more interesting topic to blog about, but I finished writing this last night just before the internet was cut off to quarantine the contestants from the leaders, who received the problems and began translating them. I didn’t know about this until it was too late, which is why I’ve been waiting since yesterday to post this.
To provide a counterpoint to the last post, one of the many, many advantages of entering an international competition is that you get to meet a lot more people you already know, so there’s less time spent being socially awkward. While waiting for stuff to happen, aside from all the expected time spent with the Taiwan team, I also talked to, played games with, and otherwise entertained a whole lot of people I already knew, including my schoolmates (no less than fourteen of them were volunteers) and some of the college students who had shepherded us around during olympiad training.
Which is a good thing, too, because there was a lot of waiting.
First I waited for my teammates; my parents had decided to take me to the hotel (Fullon Shenkeng) directly, since I had a lot of stuff, and I had arrived early. This took about an hour, after which we had lunch. Then I waited for the hotel to give us our room cards, which took about five hours, after which we had dinner. Finally, at night, I waited for the Codeforces system tests. Very nerve-wracking. But I’m getting ahead of myself.
Advantage #2 of being the home team: you can talk to all of the organizers and volunteers fluently, so you can get them to help you more quickly. Although we waited for our room cards for an obscenely long time, I got the volunteers to replace my pinyin-name-card with a legitimate one that said “Brian” on it really quickly.
Unfortunately, after I talked to a few more people, it looks like they aren’t going to change my name in the database. So if anybody reading this chances to look at the IOI live ranking and is unable to find me, look for the first name “Po-En”.
#pyconapac2014
Late post. As usual.
It started with an online competition — write programs, solve problems, get points. I wouldn’t call the problems easy, but they weren’t hard either. So I solved all of them. To make it even less impressive, only about twenty people submitted anything at all.
But the result was just what it was: I ended up with a free ticket to PyCon APAC 2014.
I’d prefer a conference about a more functional programming language, but I’ll take what I get. Another adventure!
Rise from the Ashes
After the first stage of selection camp, I was very nervous because I was fifth place in a selection sequence that would finally result in a team of four.
I screwed myself over on the first mock test by committing to a bad implementation method on a problem that was hard to get points on. My method seemed simple, but the memory usage leaked out in a way that was confusing and hard to patch; unfortunately, I tried to patch it in increasingly desperate and convoluted ways rather than scrapping the method, and thus missed out on many of the points elsewhere.
During the second test I failed to read the last problem carefully and spent too much of my time on the second problem, once again missing out on a lot of relatively easy points. I had optimized and optimized and pushed my quadratic runtime down to linearithmic, which would allow me to get the points for the last subtask — or so I thought. But with 10 minutes left I had all but one testcase right, and after desperately rereading my code, I realized that I had a string comparison stuck in an inner loop that could make my runtime degenerate to quadratic if the input string had lots of the same digit. In order to have a solidly linearithmic algorithm, I would have to implement a suffix array. Ten minutes? I gave up. (The problem setters told me afterwards that hashing would have worked too; I didn’t think of that at all. Oops.) I spent the 10 minutes reading the last problem and still failed to read it carefully. So that did not go very well.
But, as the title probably gave away, during the third and fourth mock tests everything went much better than expected. :)