SECON 2017 Online CTF putchar music(Programming, 100pt)

score-quals.seccon.jp

これをlinuxで実行すると音楽が流れるよ、と言われました。

main(t,i,j){unsigned char p[]="###<f_YM\204g_YM\204g_Y_H #<f_YM\204g_YM\204g_Y_H #+-?[WKAMYJ/7 #+-?[WKgH #+-?[WKAMYJ/7hk\206\203tk\\YJAfkkk";for(i=0;t=1;i=(i+1)%(sizeof(p)-1)){double x=pow(1.05946309435931,p[i]/6+13);for(j=1+p[i]%6;t++%(8192/j);)putchar(t>>5|(int)(t*x));}}

ですがまずコンパイルが通りません。
プログラムの挙動を変えない程度に変更します。

#include <math.h>
#include <stdio.h>

int main() {
    int t, i, j;
    unsigned char p[] = "###<f_YM\204g_YM\204g_Y_H #<f_YM\204g_YM\204g_Y_H #+-?[WKAMYJ/7 #+-?[WKgH #+-?[WKAMYJ/7hk\206\203tk\\YJAfkkk";
    for (i = 0; t = 1; i = (i + 1) % (sizeof(p) - 1)) {
        double x = pow(1.05946309435931, p[i] / 6 + 13);
        for (j = 1 + p[i] % 6; t++ % (8192 / j);) {
            putchar(t >> 5 | (int)(t * x));
        }
    }
}

音楽は流れず、標準出力に謎の文字列が大量に出力されます。
よくわからんのでputchar musicでググると、
www.youtube.com
出力を /dev/audio にパイプすると音楽が流れるらしい、ということがわかりました。
しかし自分のlinux環境(vagrant: boxcutter/ubuntu1404-desktop)には/dev/audioがないではありませんか。
ちょっとググってみても解決策がわからなかったのでしばらく放置したのですが、
正答率がかなり高い問題だったのであとから戻ってきて調べたところ、
aplayというプレーヤーで同等のことができるようでした。
https://fisproject.jp/2014/07/%E3%80%90linux%E3%80%91alsa%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9%E3%80%90aplay%E3%80%91/

$ gcc a.c -o a -lm
$ ./a | aplay

というわけでこれで8bit風味な超有名曲が聴けました。

感想

これだけのわずかなコード量でかなりしっかりした音楽が作れていたのすごいなと思いました。
むしろ作問側がどうやってこのコードに至ったのかがとても気になります。