diff --git a/2001/anonymous.md b/2001/anonymous.md new file mode 100644 index 0000000..bb7c45a --- /dev/null +++ b/2001/anonymous.md @@ -0,0 +1,28 @@ +--- +id: 2001/anonymous +year: 2001 +order: 1 +authors: "Gavin_Barraclough" +orig_url: "https://www.ioccc.org/2001/anonymous.c" +hint_url: "https://github.com/ioccc-src/winner/blob/main/2001/anonymous.hint" +title: "IOCCC 2001: Most likely to amaze" +award_ja: "もっとも仰天させそう" +--- + +## 動作 + +x86バイナリを任意のCPUの上で動かすためのバイナリ変換器。 + +残念ながら、動かせていない。 +かなりデバッグしないと動かすことはできなさそう。 +バイナリに詳しいプログラマに助けてほしい。 + +## 解説 + +anonymous.hintには実装方法が書かれていないが、コードを読む限り、x86のELF実行バイナリのサブセットをC言語コードに変換し、gccでコンパイルしてネイティブコードにするというものだと思う。 + +anonymous.hintにも「Hello worldやそれに近いプログラムしか動かせない」とあり、動かせるバイナリに強い前提があると思われる。 +あいにく、実行確認が行われたバイナリ(anonymous.hintの中で"ten"と呼ばれている)が添付されておらず、現代のgccでビルドして得られるバイナリの形式には対応できていないのだと思う。 +一応、当時のOS環境であるDebian 2.2 (potato)を作って試したが、動作を再現できなかった。 + +コードには"x86 Dynamic Binary Translator"というメッセージが埋め込まれている。 diff --git a/2001/bellard.md b/2001/bellard.md new file mode 100644 index 0000000..7a9d38e --- /dev/null +++ b/2001/bellard.md @@ -0,0 +1,73 @@ +--- +id: 2001/bellard +year: 2001 +order: 2 +patch: true +authors: "Fabrice_Bellard" +orig_url: "https://www.ioccc.org/2001/bellard.c" +hint_url: "https://github.com/ioccc-src/winner/blob/main/2001/bellard.hint" +title: "IOCCC 2001: Best abuse of the rules" +award_ja: "ルールの最高の悪用" +--- + +## 動作 + +セルフホスト可能なC言語のサブセットのコンパイラ。 +次は、添付されているbellard.otccex.cから一部だけ抜粋したコードfib.cを動かす例。 + +``` +$ gcc -m32 -rdynamic bellard.c -o bellard -ldl + +$ cat fib.c +fib(n) { + if (n <= 2) + return 1; + else + return fib(n-1) + fib(n-2); +} +main(argc, argv) { + int n; + n = atoi(*(int *)(argv + 4)); + printf("fib(%d) = %d\n", n, fib(n)); + return 0; +} + +$ ./bellard fib.c 10 +fib(10) = 55 +``` + +`./bellard fib.c 10`はfib.cをコンパイルして実行している。 +見かけ上は、C言語インタプリタのようになる。 +セルフホストは最後に示す。 + +## 解説 + +C言語のソースコードを読んで機械語(x86)に変換し、その機械語を実行する。 +ただし、実行可能ファイルを出力するのではなく、メモリ内に命令列を構築し、その中の`main`関数をcallして実行する。 +たとえば`./bellard foo.c`と実行すると、foo.cをメモリ内にコンパイルし、その結果を実行するので、見かけの挙動はC言語インタプリタのようになっている。 +実行ファイルにするにはELFフォーマットを作る必要があるので、コードサイズ制限に合わなかったか。 + +コード形状による難読化はないが、サイズ制限に収まっているだけでもすごい。 + +x86しかサポートしていないので、`-m32`が必要。 +値とポインタがともに4バイトであることを強く仮定したコードになっているので、`-m32`なしで動かすのはとても大変だと思う。 +また、`calloc`関数で得たメモリに機械語を構築してcallするが、現代ではこのようなメモリは実行フラグが立っていない([実行保護](https://ja.wikipedia.org/wiki/%E5%AE%9F%E8%A1%8C%E4%BF%9D%E8%AD%B7)を参照のこと)ので、`mmap`でメモリ確保するようにした。 + +[作者自身が解説サイトを作っている](https://bellard.org/otcc/)ので興味あれば参照されたい。 +最近、難読化されていないバージョンも公開された。 +なお作者(Fabrice Bellard)はその後、この作品を元に[tcc](https://github.com/TinyCC/tinycc)を作っている。 + +残念ながら、現代の環境ではfibまでは動かせたが、bellard.otccex.cを完全動作させることができなかった。 +詳しくは調べていないが、関数ポインタが動いていないような気がする。 +腕に自信のあるバイナリアンに解析してもらいたい。 + +--- + +当時のOS環境であるDebian 2.2 (potato)をQEMUでセットアップしたところ、bellard.otccex.cだけでなくセルフホストまで動作確認できた。 + +{% include img.html src="2001-bellard.png" desc="セルフホストができている様子" %} + +`./bellard bellard.otccex.c 10`はbellard.otccex.cをコンパイルして動かしているだけ。 +`./bellard bellard.c bellard.otccex.c 10`はbellard.cをコンパイルしてコンパイラを作り、その新しいコンパイラでbellard.otccex.cをコンパイルして実行する。 +`./bellard bellard.c bellard.c bellard.otccex.c 10`はコンパイラのコンパイルをもう一段階増やしている。 + diff --git a/2001/cheong.md b/2001/cheong.md new file mode 100644 index 0000000..2646016 --- /dev/null +++ b/2001/cheong.md @@ -0,0 +1,36 @@ +--- +id: 2001/cheong +year: 2001 +order: 3 +authors: "Raymond_Cheong" +orig_url: "https://www.ioccc.org/2001/cheong.c" +hint_url: "https://github.com/ioccc-src/winner/blob/main/2001/cheong.hint" +title: "IOCCC 2001: Best short program" +award_ja: "最高のショートプログラム" +--- + +## 動作 + +任意精度で整数の平方根を求める。 + +``` +$ gcc -o cheong cheong.c + +$ ./cheong 81 +9 + +$ ./cheong 1024 +32 + +$ ./cheong 012345678987654321 +111111111 +``` + +偶数桁でないといけない。奇数桁の場合は先頭に0をつける。 + +## 解説 + +コード形状は"√"の形になっている。驚きの小ささ。 + +基本的には[開平法](https://ja.wikipedia.org/wiki/%E9%96%8B%E5%B9%B3%E6%B3%95)で求めていると思う。 +完全には理解できていないが、1つの`char`に20進数の1桁と10進数の1桁を重ねてもたせる(20で割った余りが前者、20で割った商が後者)とか、`main`関数の再帰でうまく扱えるように値が負の範囲になるように調整する(`argc`は通常起動時は正なので、それと区別する)とか、非常にトリッキーなコードになっている。 diff --git a/2001/coupard.md b/2001/coupard.md new file mode 100644 index 0000000..ae34c2e --- /dev/null +++ b/2001/coupard.md @@ -0,0 +1,40 @@ +--- +id: 2001/coupard +year: 2001 +order: 4 +authors: "Pierre-Philippe_Coupard" +orig_url: "https://www.ioccc.org/2001/coupard.c" +hint_url: "https://github.com/ioccc-src/winner/blob/main/2001/coupard.hint" +title: "IOCCC 2001: Most obfuscated sound" +award_ja: "もっとも難読化された音" +--- + +## 動作 + +現在時刻を音声合成してくれる。次のように実行してtime.wavを再生する。 + +``` +$ gcc -o coupard coupard.c + +$ ./coupard | sox -c1 -r8000 -tub - -c2 -r44100 -twav time.wav +``` + +生成された音声のサンプルはこちら。 + +{% include audio.html src="2001-coupard.mp3" desc="time.wav" %} + +"The time is / eleven / hours / eleven / minutes / and / eleven / seconds"と発声しているのがわかるだろうか。 + +## 解説 + +現在時刻を"The time is HH hours MM minutes and SS seconds"と発声したPCMデータを出している。 +糸電話から蓄音機の間くらいの音質とcoupard.hintに書いてあるが、個人的にはそんなレベルではなく聞き取りづらいので気合いが必要。 + +elevenが一番聞き取りやすいと思ったので、11ばかりにした。 +40行目を次のように書き換えると上記の11:11:11を読み上げてくれる。 + +``` + l=-k*(k<0),i++);e(21,4);g(11);e(22,1);g(11);e(23,1);e(25,0);g(11);e(24,0); +``` + +コードは普通。音声データを表示可能文字でうまいことエンコードしているのだと思う(詳細未解読)。 diff --git a/2001/ctk.md b/2001/ctk.md new file mode 100644 index 0000000..285f302 --- /dev/null +++ b/2001/ctk.md @@ -0,0 +1,64 @@ +--- +id: 2001/ctk +year: 2001 +order: 5 +patch: true +authors: "Chris_King" +orig_url: "https://www.ioccc.org/2001/ctk.c" +hint_url: "https://github.com/ioccc-src/winner/blob/main/2001/ctk.hint" +title: "IOCCC 2001: Worst Driver" +award_ja: "最悪なドライバー" +--- + +## 動作 + +ドライビングゲーム。 + +``` +$ gcc -o ctk ctk.c + +$ ./ctk +``` + +``` + \ \ + \ \ + \ \ + \ \ + \ \ + \ \ + %%% \ \ + %\|/% \ \ + | \ \ + | \ \ + \ \ + \ \ + \ \ + \ \ + \ \ + \ \ + \ \ + | | + %%% / / + %\|/% / / + | / / + | / @ / + / / + / / +``` + +`@`が自分。bで左に進み、mで右に進み、nでまっすぐに戻す。 +1234、でギアを変える(4が最速)。 +道から外れたらゲームオーバー。なお、道は徐々に細くなっていく。 + +## 解説 + +[Apple II](https://en.wikipedia.org/wiki/Apple_II)の[Print Shop Companion](https://en.wikipedia.org/wiki/The_Print_Shop#The_Print_Shop_Companion)に入っていた"DRIVER"というイースターエッグを真似たゲームとのこと。 + +当時とエスケープシーケンスの意味が変わっているようで、動かすのには苦労した。 +現代では[CSI sequence](https://en.wikipedia.org/wiki/ANSI_escape_code#Escape_sequences)は`ESC [`の2文字だが、当時は0x9fの1文字でもよかったらしい(現代ではUnicodeに乗っ取られている)。 +また、一行挿入するシーケンスがカーソルのカラム位置を変化させない前提があるようだが、現代では左端に戻ってしまうので、調整した。 + +Linux consoleには独自のエスケープシーケンスがあるそうで、これを活用している。 +`ESC [ 10 ; n ]`でビープ音の周波数を変えることでギアに合わせたビープ音を鳴らしたり、`ESC [ n q`でギアに合わせてNum LockやCaps Lockなどのランプを光らせたりする機能もあるとのこと。 +どちらも再現できる環境がないので動作未確認。 diff --git a/2001/dgbeards.md b/2001/dgbeards.md new file mode 100644 index 0000000..eb84a89 --- /dev/null +++ b/2001/dgbeards.md @@ -0,0 +1,143 @@ +--- +id: 2001/dgbeards +year: 2001 +order: 6 +authors: "Doug_Beardsley" +orig_url: "https://www.ioccc.org/2001/dgbeards.c" +hint_url: "https://github.com/ioccc-src/winner/blob/main/2001/dgbeards.hint" +title: "IOCCC 2001: Best AI" +award_ja: "最高のAI" +--- + +## 動作 + +負けるが勝ちのチェス。 + +``` +$ gcc -DE=break -DF=char -DK=case -DP=int -DR=return -DI=0xFFFF -o dgbeards dgbeards.c + +$ ./dgbeards + +---+---+---+---+---+---+---+---+ +8| *R| *N| *B| *Q| *K| *B| *N| *R| + +---+---+---+---+---+---+---+---+ +7| *P| *P| *P| *P| *P| *P| *P| *P| + +---+---+---+---+---+---+---+---+ +6| | | | | | | | | + +---+---+---+---+---+---+---+---+ +5| | | | | | | | | + +---+---+---+---+---+---+---+---+ +4| | | | | | | | | + +---+---+---+---+---+---+---+---+ +3| | | | | | | | | + +---+---+---+---+---+---+---+---+ +2| P | P | P | P | P | P | P | P | + +---+---+---+---+---+---+---+---+ +1| R | N | B | Q | K | B | N | R | + +---+---+---+---+---+---+---+---+ +``` + +K(キング)の前のP(ポーン)を前に出してみる。 +チェスでは左列から右列へabcdefgh、下行から上行へ12345678の番号が振られていて、どのマスからどのマスへ移動するかを並べて書く。 +この場合は`e2e4`。 + +``` +e2e4 + +---+---+---+---+---+---+---+---+ +8| *R| *N| *B| *Q| *K| *B| *N| *R| + +---+---+---+---+---+---+---+---+ +7| *P| *P| *P| *P| *P| *P| *P| *P| + +---+---+---+---+---+---+---+---+ +6| | | | | | | | | + +---+---+---+---+---+---+---+---+ +5| | | | | | | | | + +---+---+---+---+---+---+---+---+ +4| | | | | P | | | | + +---+---+---+---+---+---+---+---+ +3| | | | | | | | | + +---+---+---+---+---+---+---+---+ +2| P | P | P | P | | P | P | P | + +---+---+---+---+---+---+---+---+ +1| R | N | B | Q | K | B | N | R | + +---+---+---+---+---+---+---+---+ +``` + +次は相手の番。 +AIに打たせるなら`g`と打つ(ちなみに、自分の手番でも`g`でAIに代わりに動かしてもらえるし、相手のコマの動かし方を指定することもできる)。 + +``` +g +Value 129 + +---+---+---+---+---+---+---+---+ +8| *R| *N| *B| *Q| *K| *B| *N| *R| + +---+---+---+---+---+---+---+---+ +7| *P| *P| *P| *P| *P| | *P| *P| + +---+---+---+---+---+---+---+---+ +6| | | | | | | | | + +---+---+---+---+---+---+---+---+ +5| | | | | | *P| | | + +---+---+---+---+---+---+---+---+ +4| | | | | P | | | | + +---+---+---+---+---+---+---+---+ +3| | | | | | | | | + +---+---+---+---+---+---+---+---+ +2| P | P | P | P | | P | P | P | + +---+---+---+---+---+---+---+---+ +1| R | N | B | Q | K | B | N | R | + +---+---+---+---+---+---+---+---+ +``` + +ポーンは斜めにコマを取れる。 +このチェスでは取れるコマがあるときは必ず取らないといけない。 +他のムーブはできない。 + +``` +e4f5 + +---+---+---+---+---+---+---+---+ +8| *R| *N| *B| *Q| *K| *B| *N| *R| + +---+---+---+---+---+---+---+---+ +7| *P| *P| *P| *P| *P| | *P| *P| + +---+---+---+---+---+---+---+---+ +6| | | | | | | | | + +---+---+---+---+---+---+---+---+ +5| | | | | | P | | | + +---+---+---+---+---+---+---+---+ +4| | | | | | | | | + +---+---+---+---+---+---+---+---+ +3| | | | | | | | | + +---+---+---+---+---+---+---+---+ +2| P | P | P | P | | P | P | P | + +---+---+---+---+---+---+---+---+ +1| R | N | B | Q | K | B | N | R | + +---+---+---+---+---+---+---+---+ +g +Value 7 + +---+---+---+---+---+---+---+---+ +8| *R| *N| *B| *Q| *K| *B| *N| *R| + +---+---+---+---+---+---+---+---+ +7| *P| | *P| *P| *P| | *P| *P| + +---+---+---+---+---+---+---+---+ +6| | | | | | | | | + +---+---+---+---+---+---+---+---+ +5| | *P| | | | P | | | + +---+---+---+---+---+---+---+---+ +4| | | | | | | | | + +---+---+---+---+---+---+---+---+ +3| | | | | | | | | + +---+---+---+---+---+---+---+---+ +2| P | P | P | P | | P | P | P | + +---+---+---+---+---+---+---+---+ +1| R | N | B | Q | K | B | N | R | + +---+---+---+---+---+---+---+---+ +``` + +相手はb5にポーンを動かしてきたが、これはf1のB(ビショップ)で取れるので、それ以外の動きは許されない。 + +このようにコマを進めあって、合法ムーブがなくなったら(全部のコマが取られたら)勝ち。 +なお、キングを取られても終わりではない。 + +## 解説 + +負けたらsegfaultする。 +これがこのジャンルのプログラムのスポーツマンシップであろうとのこと。 + +`{`と`}`と`;`と空白からなる文字列リテラルは、IOCCCのサイズ制限を回避しつつテーブルを埋め込むためのテクニック。 diff --git a/2001/herrmann1.md b/2001/herrmann1.md new file mode 100644 index 0000000..69a5cc4 --- /dev/null +++ b/2001/herrmann1.md @@ -0,0 +1,31 @@ +--- +id: 2001/herrmann1 +year: 2001 +order: 7 +authors: "Immanuel_Herrmann" +orig_url: "https://www.ioccc.org/2001/herrmann1.c" +hint_url: "https://github.com/ioccc-src/winner/blob/main/2001/herrmann1.hint" +title: "IOCCC 2001: Best abuse of the C preprocessor" +award_ja: "Cプリプロセッサの最高の悪用" +--- + +## 動作 + +Cプリプロセッサを使ったチューリングマシン。 + +しかし、古いCプリプロセッサの挙動に依存しており、動作できていない。 + +## 解説 + +動かせていないのでほとんど謎の状態。 + +``` +#define Q(x, y) x ## y + +Q(/, *) +``` + +で`/*`が作れることを期待しているが、`gcc -traditional-cpp`でも間にスペースが入ってしまうので動かない。 +gcc 2.95で動作確認したらしいので、このgccをビルドすれば動作確認できるかもしれない。 + +なお、Cプリプロセッサ自体は有限状態しか扱えないのでチューリング完全ではないが、[原始再帰関数](https://ja.wikipedia.org/wiki/%E5%8E%9F%E5%A7%8B%E5%86%8D%E5%B8%B0%E9%96%A2%E6%95%B0)程度の表現力はあるので、繰り返し適用する前提をおけば計算可能関数(チューリング完全)になれる。 diff --git a/2001/herrmann2.md b/2001/herrmann2.md new file mode 100644 index 0000000..d32a3e8 --- /dev/null +++ b/2001/herrmann2.md @@ -0,0 +1,200 @@ +--- +id: 2001/herrmann2 +year: 2001 +order: 8 +authors: "Immanuel_Herrmann" +orig_url: "https://www.ioccc.org/2001/herrmann2.c" +hint_url: "https://github.com/ioccc-src/winner/blob/main/2001/herrmann2.hint" +title: "IOCCC 2001: Most eye-crossing" +award_ja: "もっとも寄り目" +--- + +## 動作 + +[ランダム・ドット・ステレオグラム](https://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%86%E3%83%AC%E3%82%AA%E3%82%B0%E3%83%A9%E3%83%A0)の生成器。 + +``` +$ gcc -m32 -include stdlib.h -include stdio.h -include time.h -include unistd.h -o herrmann2 herrmann2.c + +$ ./herrmann2 < herrmann2.ioccc +A}a!5qifDWhQn cA}a!5qifDWhQn cA}a!5qifDWhQn cA}a!5qifDWhQn cA}a!5qifDWhQn cA}a! +_FPb VT\NAOxdT%_FPb VT\NAOxdT%_b VT\NAOxdTor%_b VT\NAdTor%_b VT\N#QAdTor%_b VT\ +s6C^yd3c6#cyb'Gs6C^yd3c6#cyb'Gs^yd3c6#cyb'B(Gs^yd3ccyb'B(Gs^yd3ccyb~w'B(Gs^yd3c +aJ6.CwbHgSI:G\ZaJ6.CwbHgSI:G\ZaJ6.bHgSI#V:G\ZaJ6.bSI#V:G@4\ZaJbSI#V:7SG@4\ZaJbS +7wKv|r9"q.c:Do]7wKv|r9"q.c:Do]7wKv9"q.c9R:Do]7wKv9.c9R:$"Do]7wK.c9R:&J$"Do]7wK. +9K'pKZ1_obsd.ga9K'pKZ1_obsd.ga9K'p1_obs!"d.ga9K'p1bs!"dcp.ga9K'bs!"d-Hcp.ga9K'b ++R8ekgfjk1!45r_+R8ekgfjk1!45r_+R8efjk1!m$45r_+R8ef1!m$4=]5r_+R81!m$4f.=]5r_+R81 +?qv"sued#+lU@R??qv"sued#+lU@R??qv"ed#+l)7U@R??qv"e+l)7U'q@R??qv+l)7UH)'q@R??qv+ +&[{bF||!a,@S#BG&[{bF||!a,@S#BG&[{b|!a,@u)S#BG&[{b|,@u)S#)xBG&[|,@u)S4u#)xBG&[|, +LRFk[]oJ#xP[q0"LRFk[]oJ#xP[q0"Lk[]oJ#xP[q0o."Lk[]oJP[q0o."Lk[]oJP[q#Q0o."Lk[]oJ +7D"7cG-iP&{DRNg7D"7cG-iP&{DRNg77cG-iP&{DRN;*g77cG-iP&RN;*g77cG-iPE,&RN;*g77cG-i +QE"""t/$d:%3QF2QE"""t/$d:%3QF2QE"""t/$d:%3QF2QE"""t/$d:%3QF2QE"""t/$d:%3QF2QE"" +e*Yot(spIF?1_FSe*Yot(spI1_FSe*Yot(hwspI1_FSeot(hwspI1_xjFSeot(hwI1_xjFSeotvz(hw +\#|A>"QlHaSO;@D\#|A>"QaSO;@D\#|A>"@4QaSO;@#|A>"@4QaSO;2i@#|A>"QaSO;2i@#|A>XN"Qa +w8qK}fEh]=F^:d|w8qK}f]=F^:d<4|w8qK}f]=F^:4|w8qKfa}f]=F^:4|w8qa}f]=Fu7^:4|w8qa}f +2.XSLlf3E2,Z%WX2.XSLlE2,Z%kyWX2.XSLlE2,Z%WX2.X?GSLlE2,Z%WX2.XSLlE28e,Z%WX2.XSLl +&RG#lXiNK~`ZW2$&RG#lXK~`ZWDu2$&RG#lXK~`ZW2$&RG7g#lXK~`ZW2$&RG#lXK~(C`ZW2$&RG#lX +B-x{vo;>(}DXBDEB-x{vo(}DXB{+DEB-x{vo(}DXBDEB-xpD{vo(}DXBDEB-x{vo(}*ODXBDEB-x{vo +~aa $W8k_X.jN'a~aa $W_X.jN??'a~aa $W_X.jN'a~aa|D $W_X.jN'a~aa $W_X:>.jN'a~aa $W +y]b0K)>M0E#%\@+yz>0K)>M0E#%\@+yz>0K)>M0E#%\@+yz>0K)>M0E#%\@+yz>0K)>M0E#%\@+y +``` + +これを寄り目で見ると"IOCCC"が浮き出す。 +[herrman2.ioccc](https://www.ioccc.org/2001/herrmann2.ioccc)が入力データ。 + +次はカップの例。こっちは比較的見やすい。 +[herrman2.cup](https://www.ioccc.org/2001/herrmann2.cup)が入力データ。 + +``` +$ ./herrmann2 < herrmann2.cup +Wj$'e&Vo,YA0Qc$m$kWj$'e&Vo,YA0Qc$m$kWj$'e&Vo,YA0Qc$m$kWj$'e&Vo,YA0Qc$m +iWE90h(9[palqOV6GM/b]W>h(9[palqOVGM/b]W>Ah(9[palqOVGM/b]W>Ah(9[p +5{UHiShC+vV#@[;F}-EWn>iShC+v#@;F}-EWn>iShC+v#@;F}-EDWZn>iShC+v#@;F}- +.5/G#:zp".r <5T(S?.5/G#:zp".r <5(S?5/G#:zp".r <5(SX?5=/G#:zp".r <5(SX? +bd1:dOr}u4X!IgFJ >bd1:dOr}u4X!IgFJ >d1:Or}u4X!;Ig"FJ >d1:Or}u4X!;Ig"FJ +L+ h@QmsmD.N)=hjlXL+ h@QmsmD.N)=hjlXL+ @QmsmD.eN)=hjlXL+ @QmsmD.eN)=hj +_i>`1$'[$Es#r~#X?R_i>`1$'[$Es#r~#X?R_i>`$'[$EDs#r~#X?R_i>`$'[$EDs#r~#X +0@h*`RH6Wzf5[uIrU&BY>*`RH6zf5[uIrU&~BY>*`RH6zf5[uIrU&~BY>* +GZjzu*RaVz,;CBp<'&GZjzu*RaVz,;CBp&GZjzu*RaVz,;CBp&GZw|jzu*RaVz,;CBp&GZ +OgSR+*m2j@./wx*m \OgSR+*m2j@./wx*\OgSR+*m2j@./wx*\OgOVSR+*m2j@./wx*\Og +U\ou{]2#c(!0lQ_t[MU\ou{]2#c(!0lQ_MU\ou{]2#c(!0lQ_MU\$Dou{]2#c(!0lQ_MU\ +j3Sb)[N*8}]jWM^T+pj3Sb)[N*8}]jWM^T+pj3Sb)[N*8}]jWM^T+pj3Sb)[N*8}]jWM^T +``` + +使用する文字は設定可能。 + +``` +$ ./herrmann2 "234 84 045 5 6765 7487 65190 84 656 254 12 43931 818 0 6542 341 45 567 76967 7244 606 976567 895 81898 095 68678 1843 4650547 565980691 389 04974" < herrmann2.ioccc +234 84 045 5 67234 84 045 5 67234 84 045 5 67234 84 045 5 67234 84 045 5 67234 +65 7487 65190 865 7487 65190 867487 65190 4 867487 650 4 867487 66550 4 867487 +6 254 12 43931 6 254 12 43931 654 12 4393181 654 12393181 654 123938 181 654 12 +0 6542 341 45 50 6542 341 45 50 65 341 6745 50 65 1 6745 7 50 1 674695 7 50 1 +67 7244 606 97667 7244 606 97667 74 60656 97667 740656 7 97667 0656 897 97667 0 +5 81898 095 6865 81898 095 6865 818 09578 6865 8189578 16865 89578 84 16865 89 +3 4650547 565983 4650547 565983 46547 50665983 465 5066915983 4 5066 3915983 4 +89 04974234 84 89 04974234 84 89 07423404 84 89 073404 5 84 89 3404 5 5 84 89 3 +6765 7487 651906765 7487 651906765487 6 8519067654 6 8514 90674 6 856514 90674 +6 254 12 43931 6 254 12 43931 654 12 4393181 654 12393181 654 123938 181 654 12 +0 6542 341 45 50 6542 341 45 50542 341 45 6750542 3415 6750542 34 715 6750542 3 +6967 7244 606 96967 7244 606 96967 7244 606 96967 7244 606 96967 7244 606 96967 +76567 895 8189876567 895189876567 08951898767 0895189598767 05189598767 6 0 +8678 1843 465058678 18 465058678 1478 4650678 1478 465 50678 18 465 50678 6518 +980691 389 049798069189 04942798069189 04279806349189 042798049189 80427980491 +4 045 5 6765 744 045 6765 87744 045 6765 744 0 645 6765 744 045 675165 744 045 +90 84 656 254 190 84 6 2542 190 84 6 254 190 4384 6 254 190 84 6 93254 190 84 +1 818 0 6542 341 818 6542 1 341 818 6542 341 84518 6542 341 818 65 542 341 818 +67 76967 7244 667 769 724406 667 769 7244 667 9769 7244 667 769 776244 667 769 +567 895 81898 0567 8981898 950567 898189850567 6898189850567689818869850567689 +78 1843 465054778 184365054778 184 53650548 184 5365056548 184365056548 1898436 +0691 389 0497420691 389 97420691 33489 974201 33489 97 84201 334 97 84201 4 334 +045 5 6765 7487045 5 6765 7487045 5 6765 7487045 5 6765 7487045 5 6765 7487045 +``` + +## 解説 + +これはあまり有名でないが、とにかく強烈な作品。 +なんと、コード自体がステレオグラムになっている。 + +これを実現するために、各行に同じようなコード断片が6回ほど繰り返し出現するようになっている。 +それを79x23に収めている。バイト数的には1840バイトだけれど正味使えるサイズは450バイト程度。 +しかも、コメントで逃げることなく、繰り返しても動作するように慎重に書かれている。 + +このコードは手作業で調整されているのかと思いきや、次のコマンドで自動生成しているとのこと。 + +``` +./herrmann2 \ +'char*d,A[9876];e;b;*ad,a,c; tw,ndr,T; wri; ;*h; _,ar ;on;'\ +' ;l ;i(V)man,n {-!har ; =Aadre(0,&e,o||n -- +,o4,=9,l=b=8,'\ +'!( te-*Aim)|(0~l),srand (l),,!A,d=,b))&&+((A + te-A(&(*)=+ +95>'\ +'e?(*& c_*r=5,r+e-r +_:2-19<-+?|(d==d),!n ?*d| *( (char**)+V+), ('\ +' +0,*d-7 ) -r+8)c:7:+++7+! r: and%9- 85! ()-(r+o):(+w,_+ A*(=er'\ +'i+(o)+b)),!write,(=_((-b+*h)(1,A+b,!!((((-+, a >T^l,( o-95=+))w?'\ +'++ &&r:b<<2+a +w) ((!main(n*n,V) , +-) ),l)),w= +T-->o +o+;{ &!'\ +'a;}return _+= ' < herrmann2.ioccc +``` + +このコマンドの引数は有効なC言語コードではない。 +ステレオグラムにしたときに有効なCコードになるよう、試行錯誤で作られた生成方法だと推察される。 + +入力データは小文字アルファベットで書く。`a`が最も近く、`z`が最も遠くになるように生成される。 +上記の通り、使用する文字は設定可能。 + +`argv`が`int`型として扱われるので、`-m32`が必要。 +`main (n,V)`の後に`long V;`を書き足すのでもよい。 + +賞名のeye-crossingは「寄り目」だが、「酔っ払った」の慣用表現でもある。 + +--- + +興味深かったので詳細に分析した。元コードを次のように簡略化して、骨子だけ取り出した(ひょっとしたら誤った簡略化をしている可能性もある)。 + +* 評価されないコードや無意味なコードを除去した +* 乱数のseedとしている`time(0)`を`0`に固定した +* コマンドライン引数で文字を指定する機能を取り除いた +* `read`や`write`を`getchar`と`putchar`に置き換えた +* ポインタ参照を配列参照にした +* 再帰呼び出しを`while`に、分岐を`if`にした +* グローバル変数をローカル変数にした +* インデントをまともにし、コメントを追加した + +ここまで来るとコードの正体が明らかになるが、それでもこの作品を自分で作れる気はしない。すばらしい。 + +``` +int main() +{ + int a=8,r; + char A[9876], e; + + srand(-1); + + while ((e = getchar()) != EOF) { + if (e < 95) { + /* newline */ + r = 0; + A[a] = e; + } + else if (e > 95 + r) { + /* new letter */ + r++; + A[a] = rand() % 95 + 32; + } + else { + /* repeat the pattern */ + r = e - 95; + A[a] = A[a-r]; + } + putchar(A[a++]); + } + + return 2; +} +``` diff --git a/2001/index.md b/2001/index.md new file mode 100644 index 0000000..4bb34a2 --- /dev/null +++ b/2001/index.md @@ -0,0 +1,25 @@ +--- +year: 2001 +title: "IOCCC 2001の解説" +layout: contest +--- +## 全体の印象 + +21世紀に入り、IOCCCも新時代を迎えた。そして、過去最高のクオリティ。 + +総合的な印象としては、とにかく実装難度が高そうな作品が多い。 +x86バイナリのような低レイヤを扱うもの、意味を理解するのが難しいもの、どうやって実装したのかよく理解できていないものもある。 + +この急変の背景には、サイズ制限の大幅な緩和が一つの要因であると思われる。 +空白込みで4096バイト以下、かつ、直後に空白がある`;`、`{`、`}`を除いた非空白文字が2048個以下となった。 + +純粋なインパクトでは、[[[2001/bellard]]]({{ site.baseurl }}{% link 2001/bellard.md %})のセルフホスト可能なC言語サブセットのコンパイラは外せない。 + +個人的に特におすすめしたいのは、[[[2001/westley]]]({{ site.baseurl }}{% link 2001/westley.md %})と[[[2001/herrmann2]]]({{ site.baseurl }}{% link 2001/herrmann2.md %})。 +前者はコード遊びが極まっていて、感嘆しかない。 +後者は、信じがたい制約の下で動作するコードが書かれていて驚愕する。 + +[[[2001/jason]]]({{ site.baseurl }}{% link 2001/jason.md %})や[[[2001/ctk]]]({{ site.baseurl }}{% link 2001/ctk.md %})や[[[2001/williams]]]({{ site.baseurl }}{% link 2001/williams.md %})はわかりやすい挙動で楽しい。 +その中でも[[[2001/jason]]]({{ site.baseurl }}{% link 2001/jason.md %})はメッセージのエンコード方法が非常にhackyで、コード読解の観点でも十分に楽しめた。 + +2002年と2003年はIOCCCの開催はスキップとなった。理由は説明されていないが、おそらくIOCCC 2000のREADMEに書かれていたようにLandonのvacationだろうか。 diff --git a/2001/jason.md b/2001/jason.md new file mode 100644 index 0000000..924fc50 --- /dev/null +++ b/2001/jason.md @@ -0,0 +1,208 @@ +--- +id: 2001/jason +year: 2001 +order: 15 +authors: "Jason_Orendorff" +orig_url: "https://www.ioccc.org/2001/jason.c" +hint_url: "https://github.com/ioccc-src/winner/blob/main/2001/jason.hint" +title: "IOCCC 2001: Best Of Show" +award_ja: "最優秀賞" +--- + +## 動作 + +テキストアドベンチャーゲーム。 + +``` +$ gcc -o jason jason.c + +$ ./jason +you are in a maze of twisty little passages +caves lead: left right +you see + a lamp +> +``` + +ランプを取る。 + +``` +> get lamp +done +``` + +左に向く。 + +``` +> left +you climb... +you are in a maze of twisty little passages +caves lead: left forward right back +``` + +このように指示を与えて迷路の中を探検して、8つの宝を集めて脱出するのが目的。 + +## 解説 + +一番の見どころは、この大量のメッセージがコードのどこに隠されているか。 +鍵は、マクロ`G`にある。 +このマクロの定義は次の通り。 + +``` +#define G(g,l,k,o,e,d,n,c,i,b,a,f,j,m,p) \ +a#b#c#d#e#f#g#a#i#j#k#l#m#n#o e,i l##c,m##b; d g j n h(k 30:1); o p f} +``` + +`#b#c#d...`という文字列化演算子の列が目立つ。 +そして、`G`はコード全体を囲んでいることがわかる。 +実際にプリプロセスすると、次のような巨大な文字列の定義が見える(わかりやすいように手修正している)。 + +``` +char *p = " C((j=i* T(i-4 )) +R (3 ) + 4 ) D(J..."; +``` + +そして`main`関数の冒頭で、この文字列をイテレートし、デコードを行っている。 +ざっくりいうと、文字が空白か非空白かを記号として扱い、記号の列のパターンに応じてバッファに追記する値を決めている。 +符号の長さは可変なので、おそらくハフマン符号だろう。 +また、追記する値も可変(38より大きい値の場合は、38進数の複数桁のように扱う)。 + +要するに、このプログラムはプログラムの空白の入れ方によってテキストデータをエンコードしている。 + +テキストデータは起動直後にすべてデコードされるので、マクロ`G`の定義を次のように変えると、隠されたテキストがすべて見える。 + +``` +#define G(g,l,k,o,e,d,n,c,i,b,a,f,j,m,p) \ +a#b#c#d#e#f#g#a#i#j#k#l#m#n#o e,i l##c,m##b; d g j n h(k 30:1); { int z; for(z=0; z < 408; z++) printf("%c", M[z]+86); puts(""); } o p f} +``` + +コード全体の形に意味はないと思うが、いくつか遊びが仕込まれている。 +`B? B?`を悲しげなコーラスとして入れてみたり、顔文字になっている文字シーケンスは左端に寄せてみたり、魚の骨のアスキーアート`Q)++j<`や、流れ星のアスキーアート`-~- ~ -~i +`を混ぜ込んでみたり。 + +起動直後に出るメッセージ"you are in a maze of twisty little passages"は、[コロッサル・ケーブ・アドベンチャー](https://ja.wikipedia.org/wiki/%e3%82%b3%e3%83%ad%e3%83%83%e3%82%b5%e3%83%ab%e3%83%bb%e3%82%b1%e3%83%bc%e3%83%96%e3%83%bb%e3%82%a2%e3%83%89%e3%83%99%e3%83%b3%e3%83%81%e3%83%a3%e3%83%bc)で迷路にいるとき出てくる有名なメッセージ"you are in a twisty little maze of passages, all different."が元ネタ。 + +現在地について方角と置いてあるアイテムしかメッセージが出ないので、いま自分がどこにいるのかがわからなくなりがち。 +基本的な攻略は、アイテムをあえてdropすることで、目印にすること。 + +起動のたびに迷路が変わるのでチートが大変。 +`time (0)`になっているところを(空白を壊さずに)`0000 +00`みたいな固定値に置き換えることで、固定盤面でのリスタートができるようになる。 +地図を作りながらすべての宝を集めてクリアした図。 +やってみてわかったが、`left`と打つと左に向くだけではなく、一部屋分進むので注意。 +また、通路は曲がっているので、真っすぐ進んでいてもループになっている箇所がいっぱいある。 + +``` +$ ./jason +you are in a maze of twisty little passages +caves lead: left forward right back +you see + a lamp +> get lamp +done +> forward +you climb... +you are in a maze of twisty little passages +caves lead: left forward right back +you see + a kris + a chime +> get kris +done +> get chime +done +> forward +you climb... +you are in a maze of twisty little passages +caves lead: left forward right back +you see + a talisman +> forward +you climb... +you are in a maze of twisty little passages +caves lead: left right back +you see + a ruby +> left +you climb... +you are in a maze of twisty little passages +caves lead: left right back +you see + a zither +> get zither +done +> back +you climb... +you are in a maze of twisty little passages +caves lead: forward right back +you see + a ruby +> get ruby +done +> right +you climb... +you are in a maze of twisty little passages +caves lead: left forward right back +you see + a talisman +> get talisman +done +> right +you climb... +you are in a maze of twisty little passages +caves lead: left forward right back +> forward +you climb... +you are in a maze of twisty little passages +caves lead: left forward right back +> forward +you climb... +you are in a maze of twisty little passages +caves lead: left forward right back +> left +you climb... +you are in a maze of twisty little passages +caves lead: left forward right back +> forward +you climb... +you are in a maze of twisty little passages +caves lead: left forward back +> left +you climb... +you are in a maze of twisty little passages +caves lead: left forward right back +you see + a diadem +> get diadem +done +> back +you climb... +you are in a maze of twisty little passages +caves lead: left right back +> right +you climb... +you are in a maze of twisty little passages +caves lead: left forward right back +> forward +you climb... +you are in a maze of twisty little passages +caves lead: left forward right back +> left +you climb... +you are in a maze of twisty little passages +caves lead: forward right back +you see + a harp +> get harp +done +> forward +you climb... +you are in a maze of twisty little passages +caves lead: forward back +you see + a scepter +sunlight streams in ahead! +> get scepter +done +> forward +you climb... +into bright sunlight! +score: 800 +``` diff --git a/2001/kev.md b/2001/kev.md new file mode 100644 index 0000000..dbd5261 --- /dev/null +++ b/2001/kev.md @@ -0,0 +1,62 @@ +--- +id: 2001/kev +year: 2001 +order: 9 +authors: "Kevin_Pulo" +orig_url: "https://www.ioccc.org/2001/kev.c" +hint_url: "https://github.com/ioccc-src/winner/blob/main/2001/kev.hint" +title: "IOCCC 2001: Best Curses Game" +award_ja: "最高のcursesゲーム" +--- + +## 動作 + +端末で普通に起動する。 + +``` +$ gcc -DPORT=5455 -DSPEED=50 -Dl_="socket(il.sin_family=AF_INET,SOCK_STREAM,0)" -o kev kev.c -lcurses + +$ ./kev +``` + +別の端末で次のように起動する。 + +``` +$ ./kev localhost +``` + +ピンポン対戦が始まる。 + +``` + [==================] + + + + + + + + + +7 +--------------------------------------------------------------------------------2 + + * + + + + + + + + + [==================] +``` + +下側のパッドが自分、上側が相手。,で左、,で右に動かす。 + +## 解説 + +コードはパッドの形状を縦向きにしたものになっている。 + +賞名は同年の[[[2001/williams]]]({{ site.baseurl }}{% link 2001/williams.md %})と対称的。 diff --git a/2001/ollinger.md b/2001/ollinger.md new file mode 100644 index 0000000..fe0bbf2 --- /dev/null +++ b/2001/ollinger.md @@ -0,0 +1,132 @@ +--- +id: 2001/ollinger +year: 2001 +order: 10 +authors: "Nicolas_Ollinger" +orig_url: "https://www.ioccc.org/2001/ollinger.c" +hint_url: "https://github.com/ioccc-src/winner/blob/main/2001/ollinger.hint" +title: "IOCCC 2001: Best primal ASCII graphics" +award_ja: "最高の主要なASCIIグラフィックス" +--- + +## 動作 + +セルオートマトンで素数列挙。 + +``` +$ gcc -o ollinger ollinger.c + +$ ./ollinger 1000 + 0 + 0\ + 2 1.\ + 3 1\ \ + 0\. \ + 5 1/\ \ + 0\;\ \ + 7 1:.0\ \ + 0/.0.\ \ + 0; 10 \ \ + 0|/\0; \ \ + 11 1/\.0|1 \ \ + 0\/| |1/ \ \ + 13 1:\| |\1. \ \ + 0//| \:11 \ \ + 0;\| /|.0/ \ \ + 0|/|/ : 1. \ \ + 17 1/\:|.|.11 \ \ + 0\/|; : 00/ \ \ + 19 1:\: ;|0 1. \ + 0//|./||.11 \ + 0;\:/ :0 00/ \ + 0|/:|.;11 1. + 23 1/;|;.1/0 11 + 0;/:.\|0..00/ + 0:;: /|11 .1. + 0//|/ |00 .\1 + 0;\:| | 1. \;/ + 0|/|\ | 11 \1 + 29 1/\| \| 00/ 1;/ + 0\/| /| 1. /01 + 31 1:\|/ | 11///1/ + 0//:| | 011 11 + 0;;|\ | /;0/ 00/ + 0:/| \| / |0. 1. + 0/\| /|/ |1\ 11 + 0\/|/ :| |0\\ 00/ + 37 1:\:|.|\ |1. \ 1. + 0//|; | \ |11 \11 + 0;\: \| \|00/ 100/ + 0|/| /| /| 1. \;1. + 41 1/\|/ | / | 11 \\1 + 0\/:| |/ | 00/ \;/ + 43 1:;|\ :| | 1. \1 + 0//| ;|\ | 11 1;/ + 0;\|./| \ | 00/ /01 + 0|/:/ | \| 1. ///1/ + 47 1/;:| | /| 11/ 11 + 0;/|\ | / | 011 00/ + 0:\| \|/ | /;0/ 1. + 0//| /:| | / |0. 11 + 0;\|/.|\ | / |1\ 00/ + 0|/:: | \ |/ |0\\ 1. + 53 1/;:\ | \:| |1. \ 11 + 0;/| \| /|\ |11 \ 00/ + 0:\| /| / | \ |00/ \ 1. + 0//|/ |/ | \ | 1. \11 + 0;\:| :| | \| 11 100/ + 0|/|\.|\ | /| 00/ \;1. + 59 1/\|.\| \ | / | 1. \\1 + 0\/: /| \| / | 11 \;/ + 61 1:;|/ | /|/ | 00/ \1 + 0//:| | / :| | 1. 1;/ + 0;;|\ |/ .|\ | 11 /01 + 0:/| \:|. | \ | 00/ ///1/ + 0/\| /|; | \ | 1. / 11 + 0\/|/ : \ | \| 11/ 00/ + 67 1:\:|.| \| /| 011 1. + 0//|; | /| / | /;0/ 11 + 0;\: \| / | / | / |0. 00/ + 0|/| /|/ |/ | / |1\ 1. + 71 1/\|/ :| :| | / |0\\ 11 + 0\/:|.|\ .|\ |/ |1. \ 00/ + 73 1:;|; | ; | \ :| |11 \ 1. + 0//: \|. \| \.|\ |00/ \ 11 + 0;;| /: /| .\| \ | 1. \ 00/ + 0:/|/.| / | . /| \ | 11 \ 1. + 0/\:: |/ |. / | \ | 00/ \11 + 0\/:\ :| : / | \| 1. 100/ + 79 1:;| ;|\ .|/ | /| 11 \;1. + 0//|./| ; :| | / | 00/ \\1 + 0;\:/ |. ;|\ | / | 1. \;/ + 0|/:| : ./| \ | / | 11 \1 + 83 1/;|\.|./ | \ |/ | 00/ 1;/ + 0;/|.\:/ | \:| | 1. /01 + 0:\: /:| | /|\ | 11 ///1/ + 0//|/.|\ | / | \ | 00/ / 11 + 0;\:: | \ | / | \ | 1. / 00/ + 0|/:\ | \|/ | \ | 11/ 1. + 89 1/;| \| /:| | \| 011 11 + 0;/| /| /.|\ | /| /;0/ 00/ + 0:\|/ |/. | \ | / | / |0. 1. + 0//:| :: | \ | / | / |1\ 11 + 0;;|\.:\ | \| / | / |0\\ 00/ + 0:/|.;| \ | /|/ | / |1. \ 1. + 0/\:./| \| / :| |/ |11 \ 11 + 0\/:/ | /| / .|\ :| |00/ \ 00/ + 97 1:;:| | / |/ . | \ .|\ | 1. \ 1. + 0//|\ |/ :|. | \. | \ | 11 \ 11 + 0;\| \:| .|; | .\ | \ | 00/ \ 00/ + 0|/| /|\. : \ | . \| \ | 1. \ 1. + 101 1/\|/ |.\.| \ |. /| \ | 11 \11 + 0\/:| : .\| \: / | \| 00/ 100/ + 103 1:;|\.|. /| /| / | /| 1. \;1. +``` + +## 解説 + +左側は素数、右側はオートマトン。 + +左上、真上、右上の3セルの状態から次の行のセルが決まる、9状態の1次元セルオートマトン。各状態をいい感じに`01\|/:;.`と空白の9文字で表現している(と思う)。オートマトン自体は[Korec 1998](https://link.springer.com/chapter/10.1007/BFb0029979)が提案しているもので、ベースは[Fischer 1965](https://dl.acm.org/doi/10.1145/321281.321290)とのこと。 + +IOCCC審査員のFAQの「見飽きてるネタはありますか?」に対して「素数列挙や状態機械」という回答があったので、その2つを組み合わせたとのこと。 diff --git a/2001/rosten.md b/2001/rosten.md new file mode 100644 index 0000000..ff071be --- /dev/null +++ b/2001/rosten.md @@ -0,0 +1,26 @@ +--- +id: 2001/rosten +year: 2001 +order: 11 +authors: "Edward_Rosten" +orig_url: "https://www.ioccc.org/2001/rosten.c" +hint_url: "https://github.com/ioccc-src/winner/blob/main/2001/rosten.hint" +title: "IOCCC 2001: Best abuse of the user" +award_ja: "最高のユーザ苦しめ" +--- + +## 動作 + +実行すると、X11でマウスカーソルに慣性がつくようになる。VcXsrvでも再現できた。 + +``` +$ gcc -o rosten rosten.c -lX11 + +$ ./rosten +``` + +## 解説 + +コード形状はマウスカーソルが滑る様子。 +コマンドライン引数で滑り度を指定できる。 +1より小さい値だとanti-inertiaになる。 diff --git a/2001/schweikh.md b/2001/schweikh.md new file mode 100644 index 0000000..96b8e1c --- /dev/null +++ b/2001/schweikh.md @@ -0,0 +1,35 @@ +--- +id: 2001/schweikh +year: 2001 +order: 12 +authors: "Jens_Schweikhardt" +orig_url: "https://www.ioccc.org/2001/schweikh.c" +hint_url: "https://github.com/ioccc-src/winner/blob/main/2001/schweikh.hint" +title: "IOCCC 2001: Best one-liner" +award_ja: "最高のワンライナー" +--- + +## 動作 + +globのパターンマッチ(シェルのワイルドカード)を判定する。 + +``` +$ gcc -o schweikh schweikh.c + +$ ./schweikh foo 'f??'; echo $? +0 + +$ ./schweikh bar 'f*'; echo $? +1 +``` + +`foo`は`f??`とマッチするので正常終了(0)。`bar`は`f*`とマッチしないので異常終了(1)。 + +## 解説 + +127文字のワンライナー。シンプルでよい。`*`の解釈をバックトラックしないといけない(最初にマッチしたところ以外も試さないといけない)ので、巧妙に再帰を構築している。 + +``` +$ ./schweikh foo-bar-baz-bar-qux '*bar-qux'; echo $? +0 +``` diff --git a/2001/westley.md b/2001/westley.md new file mode 100644 index 0000000..99405a1 --- /dev/null +++ b/2001/westley.md @@ -0,0 +1,171 @@ +--- +id: 2001/westley +year: 2001 +order: 13 +authors: "Brian_Westley" +orig_url: "https://www.ioccc.org/2001/westley.c" +hint_url: "https://github.com/ioccc-src/winner/blob/main/2001/westley.hint" +title: "IOCCC 2001: Best position-independent code" +award_ja: "最高の位置独立コード" +--- + +## 動作 + +元プログラムの動作は、入力を行単位でランダムにシャッフルして表示する。 + +``` +$ gcc -trigraphs -o westley westley.c + +$ echo -e '1\n2\n3' | ./westley +1 +3 +2 + +$ echo -e '1\n2\n3' | ./westley +2 +3 +1 + +$ echo -e '1\n2\n3' | ./westley +2 +1 +3 +``` + +元のソースコード自身をシャッフルしてもコンパイルできる。 +そして、シャッフル結果に依存してさまざまな挙動をするプログラムになる(変わらない場合もある)。 + +次はただのcatになった例。 + +``` +$ ./westley < westley.c > tmp.c + +$ gcc -trigraphs -o tmp tmp.c + +$ echo -e '2\n1\n3' | ./tmp +2 +1 +3 +``` + +次は行反転コマンドになった例。 + +``` +$ ./westley < westley.c > tmp.c + +$ gcc -trigraphs -o tmp tmp.c + +$ echo -e '1\n2\n3' | ./tmp +3 +2 +1 +``` + +次はsortになった例。 + +``` +$ ./westley < westley.c > tmp.c + +$ gcc -trigraphs -o tmp tmp.c + +$ echo -e '2\n1\n3' | ./tmp +1 +2 +3 + +$ echo -e '3\n2\n1' | ./tmp +1 +2 +3 +``` + +そして、パンチカード風に出力するものになった例。 + +``` +$ echo "Hello, world" | ./tmp + _________________________________________________________________________________ +/Hello, world | +|[[[[[ [[[[ | +| [[[ [[[[ | +| [ [ [ [ | +| | +| | +| [[ [ [ | +| [ | +| [ | +| [ [[ | +| | +|[ [ | +| [ | +|________________________________________________________________________________| + +$ echo '&-0123456789ABCDEFGHIJKLMNOPQR/STUVWXYZ:#@'"'"'=".<(+|./t*);,%_>?abcmnoxyz^[]{}\' | ./tmp + _________________________________________________________________________________ +/&-0123456789ABCDEFGHIJKLMNOPQR/STUVWXYZ:#@'=".<(+|./t*);,%_>?abcmnoxyz^[]{}\ | +|[ [[[[[[[[[ [[[[[[[ [[[[[[ [[[[[[ | +| [ [[[[[[[[[ [ [[[[ [[[[[[[[[[[[ | +| [ [[[[[[[[[ [ [[ [[[[ [[[ [[[[[[[[[ | +| [ [ [ [ [ [ [ [[[[[[ | +| [ [ [ [ [ [ [ [[[[[[ | +| [ [ [ [ [ [[ [ [ [ [ [[[[[[ | +| [ [ [ [ [ [ [ [ [ [ [[[[[[ | +| [ [ [ [ [ [ [ [ [ [ [[[[[[ | +| [ [ [ [ [[ [ [ [ [ [[[[[[ | +| [ [ [ [ [ [ [ [ [[[[[[ | +| [ [ [ [ [[[[[[[[[[[[ [[[[[[[[ [ [[[[[[ | +| [ [ [ [ [ [[[[[[[ | +|________________________________________________________________________________| +``` + +## 解説 + +westley.cは空行やコメント行を除いて実質28行なので、その順列の数は28! = 304,888,344,611,713,860,501,504,000,000で、このいずれもビルド可能になっている。そして、挙動で分類すると12種類になる。12種類の内訳は組み合わせ。 + +* ベースの挙動:3種類(行の順序を変えない or シャッフルする or ソートする) +* 後処理の挙動:2種類(行の順序を変えない or 行の順序を反転する) +* 表示方法:2種類(テキストそのまま or パンチカード風) + +組み合わせなので、ソートしつつ反転してパンチカード風に表示するコマンドも出てくることがある。 + +このコードの着想は、パンチカードの扱いにあるとのこと。 +パンチカードの束をうっかり床に落とすと、順番がわからなくなって大変なことになる。 +しかしC言語は行の順番を変えても意味が変わらないように書くことができる(落下耐性がある)ので便利、というネタ。 + +このコードは行をシャッフルすることで、パンチカードの落下をシミュレーションする。 +そして自分自身を落としても(シャッフルしても)動く。 +なんなら、順番を変えたら違う意味で動くようにも書けたので書いた。 + +実際にシャッフルで所望の挙動を得るのは大変なので、ちょっと便利な工夫がされている。 + +* `sort westley.c`をしたら、行の順序はいじらずにパンチカード風表示をするだけのコードが得られる +* `sort -b westley.c`をしたら、行の反転だけをするコードが得られる(`-b`は行頭の空白を無視してソートするオプション) + +パンチカードはASCIIではなく[EBCDIC](https://ja.wikipedia.org/wiki/EBCDIC)という古い文字コードで表現される。 +EBCDICでは一部の文字(`"^[]{}\"`など)が使えないので、コードはこれらを避けて書かれている。 +そのために[トライグラフ](https://ja.wikipedia.org/wiki/%E3%83%88%E3%83%A9%E3%82%A4%E3%82%B0%E3%83%A9%E3%83%95)を多用しており、`gcc -ansi`か`gcc -trigraphs`でないとビルドできない。 +`/* { /KC 0000 K } */`という謎のコメントは、EBCDICでパンチカードにしたときに`(-:`になるパターン。 + +``` +$ ./tmp < westley.c +... + _________________________________________________________________________________ +/ /* { /KC 0000 K } */ | +| [ [ [ | +| [ [ [ [ [ [ | +| [ [ [ [[[[ [ [ | +| [ [ [ [ [ | +| [ [ [ [ | +| [ [ [ | +| [ [ [ [ | +| [ [ | +| [ [ | +| [ [ | +| [ [ [ [ | +| [ [ | +|________________________________________________________________________________| +... +``` + +賞名の[位置独立コード](https://ja.wikipedia.org/wiki/%E4%BD%8D%E7%BD%AE%E7%8B%AC%E7%AB%8B%E3%82%B3%E3%83%BC%E3%83%89)は、各行をどこに置いても動くことを指しているが、本来はどのアドレスに配置されても動く機械語のことを言う。 + +実に神がかっている。これは、westley最後の作品(2020年現在)。次の作品がみたい。 diff --git a/2001/williams.md b/2001/williams.md new file mode 100644 index 0000000..a0a45f5 --- /dev/null +++ b/2001/williams.md @@ -0,0 +1,38 @@ +--- +id: 2001/williams +year: 2001 +order: 14 +patch: true +authors: "John_Williams" +orig_url: "https://www.ioccc.org/2001/williams.c" +hint_url: "https://github.com/ioccc-src/winner/blob/main/2001/williams.hint" +title: "IOCCC 2001: Best Graphic Game" +award_ja: "最高のグラフィックゲーム" +--- + +## 動作 + +X11での[ミサイルコマンド](https://ja.wikipedia.org/wiki/%E3%83%9F%E3%82%B5%E3%82%A4%E3%83%AB%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89)のクローン。 + +``` +$ gcc -o williams williams.c -lX11 + +$ ./williams +``` + +{% include img.html src="2001-williams.png" desc="ミサイルコマンド風ゲーム" %} + +降ってくるミサイルに対し基地を守る。 +クリックすると迎撃ミサイルを発射する。 +迎撃ミサイルはクリックした地点につくと爆発し、爆風の中に他のミサイルが巻き込まれたらそれも爆発する。 +それがさらに誘爆することもある。 +すべての都市が破壊されたら終了。 + +## 解説 + +コード形状は放射能マーク。 +williams.hintの中に作者コメントで「`(x|1)%2`とやってる意味わかるか?」と書かれていて、おそらく符号を取り出す意図(xが正なら1、負なら-1)だと思うが、これはC言語では実装既定なのでポータブルではなさそう。 + +賞名は同年の[[[2001/kev]]]({{ site.baseurl }}{% link 2001/kev.md %})と対称的になっている。 + +よくわからないが、`XMaskEvent`の呼び出しで刺さっていたので、取り除いたら動作した。 diff --git a/_includes/2001-anonymous.c.inc b/_includes/2001-anonymous.c.inc new file mode 100644 index 0000000..65d6577 --- /dev/null +++ b/_includes/2001-anonymous.c.inc @@ -0,0 +1,39 @@ +#define processor x86 + +#include <stdio.h> +#include <sys/stat.h> + +#define l int* +#define F char + struct stat t; +#define c return +#define I (P+=4,*L(P-4,0)) +#define G (signed F)E(*L(P++,0)) +#define C(O,D)E (D[B+V(010)/4+O*10]) +#define U R[4]=E(V(17)-4),*(l)V(021)= +F M [99],Q[99],b[9999],*ss,*d=b,*z; +#define O =(n=*(l)V(021),R[4]=E(V(17)+4),n) +#define p(a,b,c) system((sprintf(a,b,k[1]),c)),z +#define g (y/010&7) +#define R (B+13) +#define x86 (F*)index\ +(ss+V(i ),0100) +#define D(y,n,a,m,i,c )d+=sprintf( d,y,n,a,m,i,c ),(F*\ + ) P + l B,i,n,a,r,y , + P ; +#define Tr(an,sl,at,or) l an##i(d,sl){ c at? an##i(d,r):or; } \ +l an(d, sl){ c \ +r=V(014 )&63,an##i(d,sl); } +#define add(Ev,Gv) Ev(){ i=((a-=16)+C(r,4))/4,(\ +Gv?Ev() :0) ; } Ev##n(){ a=C(r,5),Ev(); } +Tr(L,r, C(r,3)&&C(r,3)<=d?(l)(((int)B)+d+C(r,4)-C(r,3)):(((int)B)^d)>>24&&--\ +r,(l)d) Tr(Run,a,(ss=strcmp((F*)B+C((V(12)>>16),4)+C(--r,0),A(.strtab))?ss:(F\ +*)B+C(r ,4),C(r,1)-2),0) add(Sca ,V(-~i)-P+2) add(ru,strcmp(ss+V(i),A(main))) +E(DX) { c *z? DX:DX <<030|(DX&65280)<<010|DX>>8&65280|DX>>24&0377; } l K(k){ +c L(E(k [(l)V(17)]),0); } V(v){ c E(B[v]); } + + +main (char *ck, char **k) { + exit(E((ck?main((z?(stat(M,&t)?P+=a+'{'?0:3:execv(M,k),a=G,i=P,y=G&255,sprintf(Q,y/'@'-3?A(*L(V(%d+%d)+%d,0)):A(R[%d]),(y&7),'\r',y/0100-1?0:G),(a+127&&a+'}'&&a+1?(a+61&&a+24&&a+025?(P=a+'H'&&a%061<=0?P:i,D(a>0?" R[%d]=E(~-E(R[%d])),\0 U R[%d],\0 R[%d] O,\0 U %d,\0R[%d]=0,"+(a&'8')*3:a <- 'c'?" %d, %c%s = R[%d], \0 %d, *R=%c%s==R[%d], \0 R[%d]=(int)%c%s,"-a%'w'%'j'*5:"%d,%d,%s=%d,",a>0?a-'h'?a-49?a&7:g:I:g,a>0?a&7:"& "[a%3%2+1],a+72?Q:A(*R),a>0|a<-99?g:I,0)):(P=i,i=a+61?a+21?E(I):G:0,D(a%' '+29+"P O,\0 U %d,P=%d,",P,P+i,0,0,0),p(d,"A'",b))):(n=g-4?g%5-1?a+127?G:I:0:(Scan(),*( x86?processor :d)=0,(int)(ss+V(i))),g%5<2?D(g%5?" %s=E(~-E(%s)), \0 U %s,"+4*g:"%s=E(E(%s)%c%d),",Q,Q,"+ - "[g],n,0):(a=G-'u'?'!':'=',D(g-4?"P=%d%c=%s?%d:%d,":"*R=E(((int(*)(l,l,l))%s)(K(1),K(2),K(3))),P O,",n,a,Q,P,P+G),p(d,"A'",b))))):(Run((z=(F*)&ck,stat(k[1],&t),B=(l)mmap(0,i=t.st_size,3,1,open(k[1],2),0))),magic((R[4]=E(B+i/4),run(),P=V(-~i),U 0)),sprintf(M,A(.%s%d),k[1],P),D("%s %s '-DX=A(%s)' -o %s '-Dmagic=",X,__FILE__,X,M,fflush(0)))),k):p(M,A(rm -f .%s*),M),*R))); +} \ No newline at end of file diff --git a/_includes/2001-bellard.c.inc b/_includes/2001-bellard.c.inc new file mode 100644 index 0000000..6913460 --- /dev/null +++ b/_includes/2001-bellard.c.inc @@ -0,0 +1,445 @@ +#include <stdio.h> +#define k *(int*) +#define a if( +#define c ad() +#define i else +#define p while( +#define x *(char*) +#define b == +#define V =calloc(1,99999) +#define f () +#define J return +#define l ae( +#define n e) +#define u d!= +#define F int +#define y (j) +#define r m= +#define t +4 +F d,z,C,h,P,K,ac,q,G,v,Q,R,D,L,W,M; +E(n{ +x D++=e; +} +o f{ +a L){ +h=x L++; +a h b 2){ +L=0; +h=W; +} +} +i h=fgetc(Q); +} +X f{ +J isalnum(h)|h b 95; +} +Y f{ +a h b 92){ +o f; +a h b 110)h=10; +} +} +c{ +F e,j,m; +p isspace(h)|h b 35){ +a h b 35){ +o f; +c; +a d b 536){ +c; +E(32); +k d=1; +k(d t)=D; +} +p h!=10){ +E(h); +o f; +} +E(h); +E(2); +} +o f; +} +C=0; +d=h; +a X f){ +E(32); +M=D; +p X f){ +E(h); +o f; +} +a isdigit(d)){ +z=strtol(M,0,0); +d=2; +} +i{ +x D=32; +d=strstr(R,M-1)-R; +x D=0; +d=d*8+256; +a d>536){ +d=P+d; +a k d b 1){ +L=k(d t); +W=h; +o f; +c; +} +} +} +} +i{ +o f; +a d b 39){ +d=2; +Y f; +z=h; +o f; +o f; +} +i a d b 47&h b 42){ +o f; +p h){ +p h!=42)o f; +o f; +a h b 47)h=0; +} +o f; +c; +} +i{ +e="++#m--%am*@R<^1c/@%[_[H3c%@%[_[H3c+@.B#d-@%:_^BKd<<Z/03e>>`/03e<=0f>=/f<@.f>@1f==&g!='g&&k||#l&@.BCh^@.BSi|@.B+j~@/%Yd!@&d*@b"; +p j=x e++){ +r x e++; +z=0; +p(C=x e++-98)<0)z=z*64+C+64; +a j b d&(m b h|m b 64)){ +a m b h){ +o f; +d=1; +} +break; +} +} +} +} +} +l g){ +p g&&g!=-1){ +x q++=g; +g=g>>8; +} +} +A(n{ +F g; +p n{ +g=k e; +k e=q-e-4; +e=g; +} +} +s(g,n{ +l g); +k q=e; +e=q; +q=q t; +J e; +} +H(n{ +s(184,n; +} +B(n{ +J s(233,n; +} +S(j,n{ +l 1032325); +J s(132+j,n; +} +Z(n{ +l 49465); +H(0); +l 15); +l e+144); +l 192); +} +N(j,n{ +l j+131); +s((e<512)<<7|5,n; +} +T y{ +F g,e,m,aa; +g=1; +a d b 34){ +H(v); +p h!=34){ +Y f; +x v++=h; +o f; +} +x v=0; +v=v t&-4; +o f; +c; +} +i{ +aa=C; +r z; +e=d; +c; +a e b 2){ +H(m); +} +i a aa b 2){ +T(0); +s(185,0); +a e b 33)Z(m); +i l m); +} +i a e b 40){ +w f; +c; +} +i a e b 42){ +c; +e=d; +c; +c; +a d b 42){ +c; +c; +c; +c; +e=0; +} +c; +T(0); +a d b 61){ +c; +l 80); +w f; +l 89); +l 392+(e b 256)); +} +i a n{ +a e b 256)l 139); +i l 48655); +q++; +} +} +i a e b 38){ +N(10,k d); +c; +} +i{ +g=k e; +a!g)g=dlsym(0,M); +a d b 61&j){ +c; +w f; +N(6,g); +} +i a u 40){ +N(8,g); +a C b 11){ +N(0,g); +l z); +c; +} +} +} +} +a d b 40){ +a g b 1)l 80); +r s(60545,0); +c; +j=0; +p u 41){ +w f; +s(2393225,j); +a d b 44)c; +j=j t; +} +k r j; +c; +a!g){ +e=e t; +k e=s(232,k n; +} +i a g b 1){ +s(2397439,j); +j=j t; +} +i{ +s(232,g-q-5); +} +a j)s(50305,j); +} +} +O y{ +F e,g,m; +a j--b 1)T(1); +i{ +O y; +r 0; +p j b C){ +g=d; +e=z; +c; +a j>8){ +r S(e,m); +O y; +} +i{ +l 80); +O y; +l 89); +a j b 4|j b 5){ +Z(n; +} +i{ +l n; +a g b 37)l 146); +} +} +} +a m&&j>8){ +r S(e,m); +H(e^1); +B(5); +A(m); +H(n; +} +} +} +w f{ +O(11); +} +U f{ +w f; +J S(0,0); +} +I y{ +F m,g,e; +a d b 288){ +c; +c; +r U f; +c; +I y; +a d b 312){ +c; +g=B(0); +A(m); +I y; +A(g); +} +i{ +A(m); +} +} +i a d b 352|d b 504){ +e=d; +c; +c; +a e b 352){ +g=q; +r U f; +} +i{ +a u 59)w f; +c; +g=q; +r 0; +a u 59)r U f; +c; +a u 41){ +e=B(0); +w f; +B(g-q-5); +A(n; +g=e t; +} +} +c; +I(&m); +B(g-q-5); +A(m); +} +i a d b 123){ +c; +ab(1); +p u 125)I y; +c; +} +i{ +a d b 448){ +c; +a u 59)w f; +K=B(K); +} +i a d b 400){ +c; +k j=B(k j); +} +i a u 59)w f; +c; +} +} +ab y{ +F m; +p d b 256|u-1&!j){ +a d b 256){ +c; +p u 59){ +a j){ +G=G t; +k d=-G; +} +i{ +k d=v; +v=v t; +} +c; +a d b 44)c; +} +c; +} +i{ +A(k(d t)); +k d=q; +c; +c; +r 8; +p u 41){ +k d=m; +r m t; +c; +a d b 44)c; +} +c; +K=G=0; +l 15042901); +r s(60545,0); +I(0); +A(K); +l 50121); +k r G; +} +} +} +main(g,n{ +Q=stdin; +a g-->1){ +e=e t; +Q=fopen(k e,"r"); +} +D=strcpy(R V," int if else while break return for define main ")+48; +v V; +q=ac V; +P V; +o f; +c; +ab(0); +J(*(int(*)f)k(P+592))(g,n; +} diff --git a/_includes/2001-bellard.patch.inc b/_includes/2001-bellard.patch.inc new file mode 100644 index 0000000..6d36ab2 --- /dev/null +++ b/_includes/2001-bellard.patch.inc @@ -0,0 +1,18 @@ +--- bellard.c ++++ bellard.c +@@ -1,4 +1,6 @@ + #include <stdio.h> ++#include <stdlib.h> ++#include <sys/mman.h> + #define k *(int*) + #define a if( + #define c ad() +@@ -6,7 +8,7 @@ + #define p while( + #define x *(char*) + #define b == +-#define V =calloc(1,99999) ++#define V =mmap(NULL, 99999/16*16+16, PROT_EXEC | PROT_WRITE | PROT_READ, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0) + #define f () + #define J return + #define l ae( \ No newline at end of file diff --git a/_includes/2001-cheong.c.inc b/_includes/2001-cheong.c.inc new file mode 100644 index 0000000..669c49d --- /dev/null +++ b/_includes/2001-cheong.c.inc @@ -0,0 +1,12 @@ +#include <stdio.h> +int l;int main(int o,char **O, +int I){char c,*D=O[1];if(o>0){ +for(l=0;D[l ];D[l +++]-=10){D [l++]-=120;D[l]-= +110;while (!main(0,O,l))D[l] ++= 20; putchar((D[l]+1032) +/20 ) ;}putchar(10);}else{ +c=o+ (D[I]+82)%10-(I>l/2)* +(D[I-l+I]+72)/10-9;D[I]+=I<0?0 +:!(o=main(c/10,O,I-1))*((c+999 +)%10-(D[I]+92)%10);}return o;} \ No newline at end of file diff --git a/_includes/2001-coupard.c.inc b/_includes/2001-coupard.c.inc new file mode 100644 index 0000000..4c9b99e --- /dev/null +++ b/_includes/2001-coupard.c.inc @@ -0,0 +1,42 @@ +#include<unistd.h> +#include<time.h> + +#define k ("C9B7351A@D-/E+F?')G>H%J#=I"[(d[(i/13)*2]*91+d[(i/13)*2+1]-3220)&(\ +4096>>(i%13))?l+1:l]-59) +#define g(n)e(n<13?n:n<20?n+1:n>20?11+n/10:13,0);e(n>12&&n<20?26:n>20&&n%10?n%\ +10:-1,2); +#define x(n)g(localtime(&a)->tm_##n) + +unsigned char *d="KZs2ITTwhwZYvec@JbYxOjf9-TZRGDb/el7#q(`SZ#|_neTwq\\MqJ5cVgte\ +K-ReK-(Mq8+D'6Ui0tG88vXJ-Tu{VI=d%cR]h7CumwBq\\-#{thj8fw$OEfEvLHP13_##w.OD[7Cw2\ +]<T{|[F}L;L:*+A#PwLnp{9'M3Mr|w_|unm'}$*(5]_$?O9zO{{ "{{" }}wz4p6vP8Ipu}$BQospf=-Isnyl'\ +|g53o^c`ov-P`-x+|ZAd<e?<'b9P|LkZOf{B-8`K([srqv&gy1,:}$|s7D{yN6M#cQyKpC|*_|#xA#\ +'YfQ}$k$kr7dM#dcnWDg|PHdA#^j&q}$x@(a;k2JB]50ZKp{xRwbkTm.v\\a3fJ@V[`J#fN`s|sZeH\ +mmHX7`JKiry4sm,bUfz69{rt'k*pBq^l,ut6UVvb9N%r%l:Py3r[.Z/pBkaz2J4u{GTu)hyp#%gbS$\ +r`mzi9G|3M,r}-Dt?w)_##%fQt$k&n]e$HzFXu(|Fvt`i#$A#|ykrz+nhs'P#|pm*9[_#,5P#}$}$x\ +&s(i,HzO'&d&g?/_$P#kZ7Dn]e$J{zi8ypi|hq$_.|cLx`sy;f8GRMQM#7R5$hym*:^`sxrvtfQ|z_\ +N|ye[7dH[}#Ts\\59V@|#z}$}$y;usL)vXFiA0AukZ8H|fyKurd]|s5<|xq@Cpm,}${,e$KufO?/2M\ +t$zmM#vtfQ|zRKlEA#P&fPOwJ#pf_$?/2#@|$w}$?fLxA#^-}$cM^aA#&g#wIv?^|yY#s)Lwt'K#ON\ +yoXKYkpCl0m}D[9OGU7n([ZrL)[8eRy7uR*PJ#^5xRG>zSf>p]ZrJ_[9q?qgYe^4$r3lY$4SdsSyNv\ +J_l&w2I?q#fN*F1n|s9OGUv|w&l+pR-3Nudtyn@|Dfq#^o|s9Pt=oZCol/{VdgkLdwyn1yDed}?Dzi\ +}#Kje#d}Y${8pSt<q?qgIv|`DH?9}$O{k(LgE;|KU-tJnWOw*F@YP#|yY$b4|.50[2d}D'kaqhp;JE\ +$r&fH&'6nykYGCv>K$t?yLbwtUn[F{ncOx_.:K#nwF#f|HQs&<&bfQPE?:uJm*&\\S=*/@|We*w@$@\ +f0,*H])WL<i@^xX@)(a.>MV*p{Zqf&zH%###################u2#A#_$A#_$A#_$A#_$@tA#QI#\ +3#0&:p#?1[P*6WQ@i#C1{[;@|1}S%^r#g.d^z#M}$ziZe|kU6oZbq5$kF]4[E^nA#_.|}e$Ku^r&WA\ +#_$?/*P_$@t&gA#[;_$A#^j2#A#_*d}@v^z#8?D?D9Q`s}$5$L|u<3JC/xVz;#s^{?9$M}$x_Y,7uP\ +$",p[6789]; + +int o[]={145,1145,1745,2545,3045,4045,4345,5145,5745,6369},i=0,j=0,l=0; + +void e(n,h){ + for(j=0;n>0;n-=!(p[j++]^9)); + for(;!n&&j[p]^9;j++)write(1,p+p[j][o],o[p[j]+1]-p[j][o]); + for(i=0;i<h[o];i++)write(1,d+7,1);} + +int main(){ + time_t a=time(&a); + + for(;i<8476;j[p]=k>=0?j<*o?k-2:(p[j+1]=k<<4):0,j+=k>=0?1+(j>=*o):0, + l=-k*(k<0),i++);e(21,4);x(hour)e(22,1);x(min)e(23,1);e(25,0);x(sec)e(24,0); + + return;} \ No newline at end of file diff --git a/_includes/2001-ctk.c.inc b/_includes/2001-ctk.c.inc new file mode 100644 index 0000000..7fdb34c --- /dev/null +++ b/_includes/2001-ctk.c.inc @@ -0,0 +1,25 @@ +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <sys/time.h> +#include <signal.h> +#define m(b)a=b;z=*a;while(*++a){y=*a;*a=z;z=y;} +#define h(u)G=u<<3;printf("\e[%uq",l[u]) +#define c(n,s)case n:s;continue +char x[]="((((((((((((((((((((((",w[]= +"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b";char r[]={92,124,47},l[]={2,3,1 +,0};char*T[]={" |"," |","%\\|/%"," %%%",""};char d=1,p=40,o=40,k=0,*a,y,z,g= +-1,G,X,**P=&T[4],f=0;unsigned int s=0;void u(int i){int n;printf( +"\233;%uH\233L%c\233;%uH%c\233;%uH%s\23322;%uH@\23323;%uH \n",*x-*w,r[d],*x+*w +,r[d],X,*P,p+=k,o);if(abs(p-x[21])>=w[21])exit(0);if(g!=G){struct itimerval t= +{0,0,0,0};g+=((g<G)<<1)-1;t.it_interval.tv_usec=t.it_value.tv_usec=72000/((g>> +3)+1);setitimer(0,&t,0);f&&printf("\e[10;%u]",g+24);}f&&putchar(7);s+=(9-w[21] +)*((g>>3)+1);o=p;m(x);m(w);(n=rand())&255||--*w||++*w;if(!(**P&&P++||n&7936)){ +while(abs((X=rand()%76)-*x+2)-*w<6);++X;P=T;}(n=rand()&31)<3&&(d=n);!d&&--*x<= +*w&&(++*x,++d)||d==2&&++*x+*w>79&&(--*x,--d);signal(i,u);}void e(){signal(14, +SIG_IGN);printf("\e[0q\ecScore: %u\n",s);system("stty echo -cbreak");}int main +(int C,char**V){atexit(e);(C<2||*V[1]!=113)&&(f=(C=*(int*)getenv("TERM"))==( +int)0x756E696C||C==(int)0x6C696E75);srand(getpid());system("stty -echo cbreak" +);h(0);u(14);for(;;)switch(getchar()){case 113:return 0;case 91:case 98:c(44,k +=-1);case 32:case 110:c(46,k=0);case 93:case 109:c(47,k=1);c(49,h(0));c(50,h(1 +));c(51,h(2));c(52,h(3));}} \ No newline at end of file diff --git a/_includes/2001-ctk.patch.inc b/_includes/2001-ctk.patch.inc new file mode 100644 index 0000000..4733b23 --- /dev/null +++ b/_includes/2001-ctk.patch.inc @@ -0,0 +1,11 @@ +--- ctk.c ++++ ctk.c +@@ -10,7 +10,7 @@ + "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b";char r[]={92,124,47},l[]={2,3,1 + ,0};char*T[]={" |"," |","%\\|/%"," %%%",""};char d=1,p=40,o=40,k=0,*a,y,z,g= + -1,G,X,**P=&T[4],f=0;unsigned int s=0;void u(int i){int n;printf( +-"\233;%uH\233L%c\233;%uH%c\233;%uH%s\23322;%uH@\23323;%uH \n",*x-*w,r[d],*x+*w ++"\x1b[H\x1b[L\x1b[;%uH%c\x1b[;%uH%c\x1b[;%uH%s\x1b[22;%uH@\x1b[23;%uH \n",*x-*w,r[d],*x+*w + ,r[d],X,*P,p+=k,o);if(abs(p-x[21])>=w[21])exit(0);if(g!=G){struct itimerval t= + {0,0,0,0};g+=((g<G)<<1)-1;t.it_interval.tv_usec=t.it_value.tv_usec=72000/((g>> + 3)+1);setitimer(0,&t,0);f&&printf("\e[10;%u]",g+24);}f&&putchar(7);s+=(9-w[21] \ No newline at end of file diff --git a/_includes/2001-dgbeards.c.inc b/_includes/2001-dgbeards.c.inc new file mode 100644 index 0000000..f422183 --- /dev/null +++ b/_includes/2001-dgbeards.c.inc @@ -0,0 +1,162 @@ +#include <stdio.h> +#include <string.h> +#include <time.h> +#define A(x,y) i[a++]=(N){c,c+x,y}; +#define B(x,y) j[b++]=(N){c,c+x,y}; +#define C(j,k) for (j=0; j<k; j++){ +#define D(x) C(_,8)if(!(c+x[_]&136)){ if(p[c+x[_]]*p[c]<0)B(x[_],0)else if(!p[c+x[_]])A(x[_],0)} } +#define J printf( +#define O(v) _=v; while(!(c+_&136)){ x=p[c+_]*p[c]; if(x<0){B(_,0)E; } else if(x>0)E; else A(_,0)_+=v; } +#define X(x) G(x,L) +#define Z(x,y) memcpy(x,y,256); + +typedef struct { +F a,b,c; +} N; + +F g[]="KSLAU", +p[256],v[]="{ ; } ; { ; ; ; { } ; { ; } { ; } { } ; { ; ; ; { ; } ; } } ; { ; ; { } ; { } } ; { ; ; { { ; ; { } } ; } ; ; { } ; { } } ; { ; ; { { ; { } } ; { ; ; { } ; { { ; ; { } ; ; ; ; { ; } { { ; ; ; { } ; { ; ; "; +F S[]="{}; ",W[256],L[1024]; +P q[]={-14,-31,-33,-18,14,31,33,18},r[]={-1,-17,-16,-15,1,17,16,15},_,a,b,c,d,e,t=1,x,y,z; +N i[500],j[500],*k,u; +P f(N *V) { + a=b=0; + C(d,8) + C(e,8) + c=d<<4|e; + if(p[c]==0||p[c]*t<0)continue; + switch(p[c]<0?-p[c]:p[c]){ + K 80: + if(56+t*40==(c&112)&&!p[c-32*t]) + A(t*-32,0) + if(56+t*-40==(c&112)){ + if(!(c-17*t&136)&&p[c-17*t]*t<0){ + C(_,5) + B(-17*t,(g[_]^_)*t)} + } + if(!(c-15*t&136)&&p[c-15*t]*t<0){ + C(_,5) + B(-15*t,(g[_]^_)*t)} + } + C(_,5) + A(t*-16,(g[_]^_)*t)} + }else{ + if(!p[c-16*t]) + A(t*-16,0) + if(!(c-(17*t)&136)&&p[c-17*t]*t<0){ + B(-17*t,0) + } + if(!(c-(15*t)&136)&&p[c-15*t]*t<0){ + B(-15*t,0) + } + } + E; + K 78:D(q)E; + K 81: + K 66:O(17)O(-17)O(15)O(-15) + if(p[c]==66||p[c]==-66) + E; + K 82:O(1)O(-1)O(16)O(-16)E; + K 75:D(r) + } ; + } + } + if ( b > 0 ) { + C(_,b)V[_]=j[_]; } + R b; + } else { + C(_,a)V[_]=i[_]; } + R a; + } +} +F *G(F *n, F *o){ + a=b=0; + for(; n[b]; d=0){ + do{ + d*=4; + d+=W[n[b++]]; + } while(++b<8*a+8); + o[a++]=d; + } + o[a]=0; + R o; +} +m(N a){ p[a.b]=a.c?a.c:p[a.a]; p[a.a]=0; } +h(){ + J X("{ ; { { { ; ; { ; } { ; } { ; } { ; ; { ; } { ; } { ; } { ; ; { ; } { ; } { ; } { ; ; { ; } { ; } { ; } { ; ; { ; } { ; } { ; } { ; ; { ; } { ; } { ; } { ; ; { ; } { ; } { ; } { ; ; { ; } { ; } { ; } { ; ; { { ; ; ")); + c=0; C(c,120)c%8==0&&putchar(56-c/16); + if(p[c]<0){ + J X("} { { ; { { { ; ; ; { ; } } } ; { "),-p[c]); + } else if(p[c]>0) + J X("} { { ; { { { ; } } } ; { { ; { { "),p[c]); + else + J"| "); + c%8==7?J X("} { { { ; ; { ; { { { ; ; { ; } { ; } { ; } { ; ; { ; } { ; } { ; } { ; ; { ; } { ; } { ; } { ; ; { ; } { ; } { ; } { ; ; { ; } { ; } { ; } { ; ; { ; } { ; } { ; } { ; ; { ; } { ; } { ; } { ; ; { ; } { ; } { ; } { ; ; { { ; ; ")),c+=8:0; + } +} +s() { + b=0; C(a,256) + if(v[b]==94){ + b++; C(c,v[b]-32)p[a++]=v[b+1]-120;} + b+=2; a--; + } else + p[a]=v[b++]-120; + } +} +P w() { + P v=0; + C(_,120) + p[_]&&(p[_]*t>0&&v--,p[_]*t<0&&v++); + } + v+=f(i); v-=b?100:0;t=-t; v-=f(i); v+=b?100:0;t=-t; + + R v; +} +P V(P n, P o) { + P s=-I,G,H,Y; + N M[500]; + F u[256]; + + if(!(n+o))R w()+time(NULL)%9-4; + if(!(H=f(M)))R I; + H<5?H==1?n++:(o<6?o++:0):0; + Z(u,p) + C(G,H) + Z(p,u) + m(M[G]); + t=-t; + s=(e=-V(n-1,o))>s?Y=G,e:s; + t=-t; + } + e=Y; + R s; +} +main(P db, F *bd[]){ + N o[500]; + F T[256]; + + C(a,256)W[a]=-1; } + C(a,4)W[S[a]]=a; } + G(v,v); s(); + while(1){ + h(); + b=f(o); + scanf("%s",L); + if(strcmp(L,"quit")==0)R 0; + else if(strcmp(L,"g")==0){ + Z(T,p) + J G("} } } ; } ; { } } ; { } } } } ; } } { ; { { { ; } } } ; } { { { ; ; ",L), V(db>1?atoi(bd[1]):3,0)); + Z(p,T)m(o[e]); t=-t; + }else{ + u.a=896-16*L[1]; + u.b=896-16*L[3]; + u.a+=L[0]-97; + u.b+=L[2]-97; + u.c=L[4]?L[5]:0; + C(a,b) + if(u.a==o[a].a&&u.b==o[a].b&&u.c==o[a].c)E; + } + a==b?J X("} { ; } } ; { } ; { } ; } } } ; } } ; { } } ; { { ; { { } ; } } ; } } ; } ; } } { { ; ; ")):(m(u),t=-t); + } + } +} \ No newline at end of file diff --git a/_includes/2001-herrmann1.c.inc b/_includes/2001-herrmann1.c.inc new file mode 100644 index 0000000..9527543 --- /dev/null +++ b/_includes/2001-herrmann1.c.inc @@ -0,0 +1,327 @@ +#define D define +#define U undef +#define n # + + +#undef __FILE__ + n U __FILE__ + n D f __FILE__ + n D N endif + n D p e(prg) + n D e(x) #x + n D q # + n D o E #F + n D E Q( + n D G x,y,z) + n D H E y,z) + n D F ,) + n D g o else + n D d o D + n D u o U + n D w E o F D +#ifdef prg + + + +#ifndef tape +n include p +n ifndef tape +n D tape O +n endif +#endif +n D O Z(O, +n D I Z(I, +q D i tape +n U O +n U I +n D O ,) +n D I ,) +q D v tape +n U O +n U I +#undef tape + n U tape + q U tape +#endif /* tape */ + + +q ifndef P +q D H y ## z +#ifdef prg +d c 0 & 0 +d R i W v +d B Initializing... +d L V /* the turing */ +d M Y(O)/* state to */ +d S(x) T(O,1, start ##x) +#else +d c 0 +#endif +q D P P +q include f +q U Q +q D H H +q N +q U f +o ifndef P +E # D H y ## z F +d O 3 +d I 3 +d x 3 +o if c+2 +E o F include <stdio.h> + + +int main() { + return 2+c|! + printf + ( + d y "\n" + d z ".." + d j " " + d P "*" + d k " " + o if c + w Y(Z) #Z + "Un" + "define" + "d state " + Y(B) y y +"Tape:" + o elif !c +"Usage:" + d M 0 + " prg=myprg.turing " + d L , + d R , + "[" + "tape=" + "\"" + "O I O..." + "\"" + "]" + g + "Final " +"tape:" + o N + u O + u I + d O "O" + d I "I" + g + d j _ + d z ... + d k ~ + +/*StarBox*/ +/*********/ + d P * + d y * + E E /,*) F + * + * State: B +/*********/ + + u O + u I + o N + u x + u a + u c + u B + o ifdef s + d J s + d A l + d B m + d C r + d t K + d a L + d b M + d c R + g + d J S + d A L + d B M + d C R + d T K + d a l + d b m + d c r + o N + y + + + /*Triangles*/ + d V j j j j + d W j j j j + d X(G y j + d Z(G j y + d Y(x) P + y A B C + u X + u Y + u Z + u V + u W + + d X(G y x + d Z(G x y + d V z O O + d W O O z + d Y(x) x + y A B C + u X + u Y + u Z + u V + u W + + d V k k k k + d W k k k k + d X(G y k + d Z(G k y + d Y(x) P + y A B C + u X + u Y + u Z + u V + u W + y + u j + u k + u z + u P + u y + u O + /*EndOfTriang*/ + + + /* Rain */ + o ifndef I /*/*/ /*/*/ + /*/*/*/*/*/ /*/*/ + E E /*/*/*/*/*/,/) F + d K(G /*/*/ y + o if J(x) + u K + d K(G x + w a X(J(x),A F + u K + d Z(G x + d W O + w b Y(C) + d P C + u Z + o U W + + + d Z(G z ## y + w c C + u Z + g /* <- exit */ + u K + d X(G z ## y + + + w a A + u X + d X(G x + d V O + w b Y(A) + d P A + u X + u V + d K(G x + w c Z(J(x),C F + u K + o N + u a + u b + o U c + + + d X(G J(_ ## x) + d V J(_O) + d Z(G J(_ ## x) + d W J(_O) + d Y(x) J(_ ## x) + + + o ifdef s + u t + d t(G z + d j S(x) + d k T + + g + u T +d T(G z + d j s(x) + d k t + o N + u tape + o include p + u tape + d stop_O x + d stop_I x + w a(P) O&I&x + + + d O 0 + d I 0 + d x 0 + w c a(P) + u O + u I + u x + d left 0 + d right 1 + w j k(P ## x) + u P + u left + u right + u stop_O + u stop_I + + + u Y + o U X + u V + u Z + o U W + u A + u B + o U C + u j + u k + w B J (.) + u J + u t + o U T + + + /*Codeblk*/ + o D P P + o include f + E n U Q F + E n D H H F + + + g + ); +} +w P x +o N +o N +o U f +u l +u L +o U m +u M +u r +o U R +u S +u s +o U B +u a +u c \ No newline at end of file diff --git a/_includes/2001-herrmann2.c.inc b/_includes/2001-herrmann2.c.inc new file mode 100644 index 0000000..16c7279 --- /dev/null +++ b/_includes/2001-herrmann2.c.inc @@ -0,0 +1,23 @@ +char*d,A[9876];char*d,A[9876];char*d,A[9876];char*d,A[9876];char*d,A[9876];char +e;b;*ad,a,c; te;b;*ad,a,c; te;*ad,a,c; w,te;*ad,a, w,te;*ad,and, w,te;*ad, +r,T; wri; ;*h; r,T; wri; ;*h; r; wri; ;*h;_, r; wri;*h;_, r; wri;*har;_, r; wri + ;on; ;l ;i(V) ;on; ;l ;i(V) ;o ;l ;mai(V) ;o ;mai(n,V) ;main (n,V) + {-!har ; {-!har ; {har =A; {h =A;ad =A;read +(0,&e,o||n -- +(0,&e,o||n -- +(0,&o||n ,o-- +(0,&on ,o-4,- +(0,n ,o-=94,- +(0,n +,l=b=8,!( te-*A,l=b=8,!( te-*A,l=b,!( time-*A,l=b, time)|-*A,l= time(0)|-*A,l= +~l),srand (l),~l),srand (l),~l),and ,!(l),~l),a ,!(A,l),~l) ,!(d=A,l),~l) +,b))&&+((A + te,b))&&+((A + te,b))+((A -A+ te,b))+A -A+ (&te,b+A -A+(* (&te,b+A +)=+ +95>e?(*& c)=+ +95>e?(*& c) +95>e?(*& _*c) +95>(*& _*c) +95>(*&r= _*c) +95> +5,r+e-r +_:2-195,r+e-r +_:2-195+e-r +_:2-1<-95+e-r +_-1<-95+e-r ++?_-1<-95+e-r +|(d==d),!n ?*d||(d==d),!n ?*d||(d==d),!n ?*d||(d==d),!n ?*d||(d==d),!n ?*d||(d= + *( (char**)+V+ *( (char)+V+ *( (c),har)+V+ (c),har)+ (V+ (c),r)+ (V+ ( c), ++0,*d-7 ) -r+8)+0,*d-7 -r+8)+0,*d-c:7 -r+80,*d-c:7 -r+7:80,*d-7 -r+7:80,*d++-7 ++7+! r: and%9- +7+! rand%9-85 +7+! rand%95 +7+!! rand%95 +7+ rand()%95 +7+ r +-(r+o):(+w,_+ A-(r+o)+w,_+*( A-(r+o)+w,_+ A-(r=e+o)+w,_+ A-(r+o)+wri,_+ A-(r+o) ++(o)+b)),!write+(o)+b,!wri,(te+(o)+b,!write+(o=_)+b,!write+(o)+b,!((write+(o)+b +-b+*h)(1,A+b,!!-b+*h),A+b,((!!-b+*h),A+b,!!-b+((*h),A+b,!!-b+*h),A-++b,!!-b+*h) +, a >T^l,( o-95, a >T,( o-=+95, a >T,( o-95, a)) >T,( o-95, a >T,(w? o-95, a >T +++ &&r:b<<2+a ++ &&b<<2+a+w ++ &&b<<2+w ++ ) &&b<<2+w ++ &&b<<((2+w ++ && +!main(n*n,V) , !main(n,V) , !main(+-n,V) ,main(+-n,V) ) ,main(n,V) ) ,main),(n, +l)),w= +T-->o +l)),w= +T>o +l)),w=o+ +T>o +l,w=o+ +T>o;{ +l,w=o+T>o;{ +l,w &=o+ +!a;}return _+= !a;}return _+= !a;}return _+= !a;}return _+= !a;}return _+= !a;} \ No newline at end of file diff --git a/_includes/2001-jason.c.inc b/_includes/2001-jason.c.inc new file mode 100644 index 0000000..e049515 --- /dev/null +++ b/_includes/2001-jason.c.inc @@ -0,0 +1,184 @@ +#include <time.h> +#include <stdio.h> +#include <stdlib.h> + +#define __ "Y\n : ! ,.?>" +#define D(f) ; } int f(int i) { return +#define E(a,b,c,d,e) b##d,c,e,a +#define e(a,b,c,d) a##b##c##d +#define B *p++ - ' ' || !p++ +#define _(k) o(*#k - 64) +#define G(g,l,k,o,e,d,n,c,i,b,a,f,j,m,p) \ +a#b#c#d#e#f#g#a#i#j#k#l#m#n#o e,i l##c,m##b; d g j n h(k 30:1); o p f} + + G(E(f ( 9) -s + ? -s + 'q' + ? f( 5 ) -s &&'d' - + s?U( 3 ) ||_(J) + :A ( s- f( 5 )) + :(c= 4 * + 4): + + g(0)D( + + V)c <= 3 *4 + 3&&c && V(X ( i) ) ; + } + + int , time ( 0)& , c - 15 || P + + (1 + +):0, + & ( !!d ( 0 ) + ||(a=! _(S)) ,b= 0 )|| + a + ?d(a = 0) + ? _ +(I): w ( j =!W(j=_ (V ))) , + + l(_ + (Y+ s ) ) + )e + + ( + main(){; + ;;;s , ra, + n, d), && C ( j +R( s-j+t( i- 1) ) + )D( W)m[ c* 4| z( j ) ] + &&_( X )E (d ( 0 + )&& R( 6)/ 6 + ? c= 17|_ ( T ) + :01,||+ + , v =i & 3 ^ 2 + ,+j & 3&&W ( j)||y ( 10 )D (k) -- + j ? k ( O[j]=R(15 )) +: 1 D + ( H )o ( 7+! ! i+3 )+ + + i? + + c=i /4 & 63, + a= 1 + +:0) + + D ( f )( p =M ,q ( i),*p+86) + D ( l) * f, B? + + B ?B ?B? B ?B ?B + ?7 :B?B ?36: 59 * 89 *5 * 2 :B?6587 + *77 :9 + 2:B ?B?B?9: 5 : 37 : B ? 5 +5:4:20: + B?B?B?32 + + :e( 4, 3 , 1 *4 * 59 * 1 , 7):B? + 17: 34 : 19 :B ? + 8 *2 :B ? + 2:26: B? + B?B ?B ? + + 82 *+ 576: B ?33 :22 :5 * 5:3 *4 :3:B ?B ?B? B ?6 + + + 17 : B?B?13:6 : 9 *2:B?15 : 7 *2 : + + B ? + B ? + 27:24: 31 : B? + + + B? + 29 :, + m [a^ 2 ] =T( 8 * 7) ;j= 3 + ; + ; + Q, ;int + P ( int + i ) + + {time_t(x ) =+ 0+ + time(0) ; j=E( u (i ) : i D(R )e(r , + a ,n ,d) ()% i+1, ( e( l , o, + caltim , e ) (& x)) ->e( tm_h , o, u , r) + ;retur , i?_( W +): _( U) D(Y) *p&& *p<3 * 11 ? + ( ++ p ), n j= + 34 +( j< 6 + ||j>19 ),Y (i) +: *p + + D ( F) i == 9 ?1 : + F( (i+ 7)% ( 7 + 3) ) +!O[ i + ]D(u) *p &&* p -32? p ++) + D (h ) i ?*++*S=i% ( 38)- 1, + D ( A )! n?i&&!g ( (0 ) ) ||K ( j=4| ! !i ) : N(!i )D( + Q)++j< + + (s ) &&Q ( t( i)^i ) + D( U )i>= 0 ?U( i- 1 )||~f (i+1 ) == ~ s + &&H (m[c* 4 |z(i)] ) +:0;D + + + ( X) + b && b<, for (*S = M ; * +p; ), + + gets ( L, + 98 , stdin ) ? + p= L, E (r( 0 ): 0 ,h( i / 38 ) : 0;D( C)! + ( m[j]+m [a= i] ) ?m[j[m]= i]=j:0;D (d) ! + b+(* O- + c)* + * O; D (z ) + + + -~- ~ -~i + + v + & 3 D(y)( putchar ) ( i) + D ( q ) i& ,!(O[j = i] + || _ ( O))+a :0; + D (w)O[ j] ==c && o + + (( !i ++ ? ! !_ (M + +): + + 0) +15)|| ++ j<9 &&w ( +i)D ( r )*p? *p -4? + * p -6 ? + y(*p <9 + 2?__[ + * p +]: * p+ 7 +79):o( j+1) : o (26+j),&q ( -! + * p ++ + i )D(x)i? a=x ( ( -- i)), ++ p ) + D( t ) i, | C((j=i* + T(i-4 )) +R + (3 ) + 4 ) + D(J) !j --E( 0 D ( K )!-!N, || i &, + _( R ) :i* c== (O + [ j ] ) &&n==f (j+ 6 + 5 * 4)?O + [j]= !i * c-_ ( L) :J(i ) + D ( N ) j=9, & d(0 )? j= 6 | ! i , J(i )D + ( o)(*S = p , ++ S,p = M , r (q (i) ),-- S, p = *S)) + ( (l (_ (Q )),n =s,i ^5 ) ) ;, E(j , + sign , v ,ed ( b ) ;; + int c =1 ,O[9]) + ;int( s +)= + E (n ;char, 1 ,a,6 ,o ())* Z[ + E(M [37 * 9 *3 ] ,0,L [ 99] ,3] , * *S=Z ) ; + E (*p=+1 ,char( m)[6 , co , 4 ],ol) + +, + V ( v=*O = k( j= 9 )) ; + return ! c&& - ~ ~ - -! printf + ( ( "%d \n") , F (P ( 0) +6) *50 + ! ! b* + ( +b - (int)time ( 0 )) ) +;, ( b= 60 + time ( 0)+ 60 * 4) ;, n =Y + (u (s =Y (i) ) ) + + : (exit( 0) + ,i)D( g )x ( _(N) ^ 9)? !( a =0) : _ ( P )D (T)! i|, + (2); s=35; Q(3); + + s=59; Q(6); + + + a=1; + + + + + ) \ No newline at end of file diff --git a/_includes/2001-kev.c.inc b/_includes/2001-kev.c.inc new file mode 100644 index 0000000..05373ad --- /dev/null +++ b/_includes/2001-kev.c.inc @@ -0,0 +1,120 @@ +#include <unistd.h> +#include <curses.h> +#include <sys/socket.h> +#include <netinet/in.h> +#include <netdb.h> +#include <sys/time.h> + +#define o0(M,W) mvprintw(W,M?M-1:M,"%s%s ",M?" ":"",_) +#define O0(M,W) M##M=(M+=W##M)-W##M +#define l1(M,W) M.tv_##W##sec +#define L1(m,M,l,L,o,O) for(L=l;L--;)((char*)(m))[o]=((char*)(M))[O] +#define I1 lL,(struct sockaddr*)&il +#define i1 COLS +#define j LINES +#define L_ ((j%2)?j:j-1) + +fd_set I;struct socka\ +ddr_in il;struct host\ +ent*LI; struct timeval +IL,l;char L[9],_[1<<9] + ;void ___(int __ + ){_[__--]=+0;if( + ++__)___(--__);_ + [__]='=';}double + o,oo=+0,Oo=+0.2; + long O,OO=0,oO=1 + ,ii,iI,Ii,Ll,lL, + II=sizeof(il),Il + ,ll,LL=0,i=0,li, + lI;int main(int\ + iL,char *Li[]){\ + initscr();cbreak + ();noecho();nonl + ();___(lI=i1/4); + _[0]='[';_[lI-1] + =']';L1(&il,&_,\ + II,O,+O,+lI);il. + sin_port=htons(( + unsigned long)(\ + PORT&0xffff));lL + =l_;if(iL=!--iL) + {il. sin_addr .\ + s_addr=0;bind(I1 + ,II);listen(lL,5 + );lL=accept(I1,& + II);}else{oO-=2; + LI=gethostbyname + (Li[1]);L1(&(il. + sin_addr),(*LI). + h_addr_list[0],\ + LI->h_length,iI, + iI,iI);(*(&il)). + sin_family=(&(*\ + LI))->h_addrtype + ;connect(I1,II); + }ii=Ii=(o=i1*0.5 + )-lI/2;iI=L_-1;O + =li=L_*0.5;while + (_){mvaddch(+OO, + oo,' ');o0(ii,iI + );o0(Ii,Il-=Il); + mvprintw(li-1,Il + ,"%d\n\n%d",i,LL + );mvhline(li,+0, + '-',i1);mvaddch( + O,o,'*');move(li + ,Il);refresh();\ + timeout(+SPEED); + gettimeofday(&IL + ,+0);Ll=getch(); + timeout(0);while + (getch()!=ERR);\ + if(Ll=='q'&&iL)\ + write(lL,_+1,1); + if(ii>(ll=0)&&Ll + ==','){write(lL, + _,-(--Il));}else + if(Ll=='.'&&ii+\ + lI<i1){write(lL, + _+lI,++Il);}else + if(iL||!Il)write + (lL,_+lI-1,4-3); + gettimeofday(&l, + 0);II=((II=l1(IL + ,)+(l1(l,u)-=l1( + IL,u))-l1(l,)+(\ + l1(l,)-=l1(IL,)) + )<0)?1+II-l1(l,) + +1e6+(--l1(l,)): + II;usleep((II+=\ + l1(l,)*1e6-SPEED + *1e3)<0?-II:+0); + if(Ll=='q'&&!iL) + break;FD_ZERO(&I + );FD_SET(lL,&I); + memset(&*&IL,ll, + sizeof(l));if((\ + Ll=select(lL+1,& + I,0,0,&IL)));{if + (read(lL,&L,ll+1 + )){if(!*L){ll++; + }else if(*L==ll[ + _]){ll--; }else\ + if(*(&(*L))==1[_ + ]){break;}}else{ + break;}}O0(o,O); + O0(O,o);if(o<0){ + o*=-1;Oo*=-1;}if + (o>i1){o=i1+i1-o + ;Oo*=-1;}if(o>=( + Ii+=ll)&&O<1&&oO + <0&&o<Ii+lI){O=2 + ;oO=~--oO;Oo+=ll + *4e-1;}if(O<0){O + =iI;LL++;}if(o>= + (ii+=Il)&&O>iI-1 +&&oO>0&&o<ii+lI){O=iI- +2;oO=~--oO;Oo+=Il*4e-1 +;}if(+O>+iI){O-=O;i++; +}}endwin();return(0);} diff --git a/_includes/2001-ollinger.c.inc b/_includes/2001-ollinger.c.inc new file mode 100644 index 0000000..34e09e5 --- /dev/null +++ b/_includes/2001-ollinger.c.inc @@ -0,0 +1,21 @@ +#define n ((e[++a]-42)/9-f[d+1])? +#define o printf("%c",c[" 01./:;|\\"]); + +char e[]="**3<HRZcir+3@OXakt;=GOXds*\?HRZcir*7HNZ`i19JS\\p*H[m1:CJSz*>H[`mr25\ +\?Hx,P,B2Gs-KTfzRdv1SeyCR-ISeu.<Ev+9+P,z,4PfzIdvO2*HRZcir6GPis=MU*3HRZcir*HZi\ +1JS\\epy*>H[m1JSey*DH[m*3<HZiu-@P*3HZi<N]q1JS\\epy:[m1CJSeny06I[m*4\?HRZcir,\ +\?*6HRZcir1J]q2K*H[m2K*H[m2@K]qtO@M2DK]q,]q1JS\\epy[m1:JSey+[m*3<HRZcir13Gt,\ +=GVs*3<HRZcir1J]qz*HF*AH2;DK]qua0=G2:K]q]q1CJS\\pDVu1:JS*D!+3:BIOSY`egilqtxz\ +\177.0249<==>EJMUY`ejov#$59@CJOXYZbfhlnrxy&+.57=@IMR[``bcfmnq!#),@",*f; + +int main(int j,char *k[]) { + int a,b,c,d,g,h,i=19; + + printf(" "); + for(g=0[f=(char *)calloc(80+(h=atoi(1[k])),1)]=1; g<=h; g++) { + if ((g>30)&&(f[i-2]+f[i-1]!=0)) i++; + for(d=c=0; d<i; d++) { + o f[d]=(e[b=c*9,b+=(c=d[f]),(((a=e[345+b]+b/19*85-33-b/40*12-b/80*4)[e] + -42)/9-f[d+1])?n n n n n n n n 0:a:a:a:a:a:a:a:a:a]-42)%9; } + o if (0[f]-1) printf("\n%6i ",g); else printf("\n "); } +} \ No newline at end of file diff --git a/_includes/2001-rosten.c.inc b/_includes/2001-rosten.c.inc new file mode 100644 index 0000000..0e47272 --- /dev/null +++ b/_includes/2001-rosten.c.inc @@ -0,0 +1,57 @@ +#ifdef s + z + r( + ){z + k=0,l + =0,n,x + XQueryPointer(i + ,XRootWindow (i,j),&m, + &m,&o,&p,&n,&n,( ghj)&n),(o + >=s(g)||s(o + )<=0)&&(k=1), + (p>=h||p<=0)&& + (l=1),(e==1)&&( + c=o,d=p,e=0,1)||( + (k==0&&o-c-(z)(a+y + (a)*.5)!=0)&&(a=o-c + ),(l^-1==-1&&p-d-(z)( + b+y(b)*.5)!=0)&&(b=p-d),a/=f,b/=f + ,k=0,l=0);(o >=s(g)||o<=0)&&(a=-a),( + p>=h||s(p)<=0) &&(b=-b),c=o,d=p,I(XWarpP + ,ointer)(i,None,None,0,0,s + (g),h,(z)(a+y(a)*.5),(int)( + b+y(b)*.5 JJ(float B;int)C,D; + #else/*Egads! something has */ + #include<X11/Xlib.h>/*taken a*/ + #include<stdio.h>/*huge bite o-*/ + #include<stdlib.h>/*ut of the m-*/ + #include<time.h>/*ouse pointer!!!*/ + #define H(a, b) (((a)&(7<<3*(b)))>>3*(b)) + #define G(c,d) ((H(c,d)<<3*(d+1))|((H(c,d+1)<<3*d)|/* + _XSetPointer(display, screen,GREASY|BOUNCY)*/c&~(63<<3*(d)))) +#define s(e) (G(G(G(G(G(G(e,(z)0),1),2),1),0),1)) + typedef int z;float a=0,b=0,c,d,f=1.03;z e + =s(512),g,h,j; + Display/**/*i; + #define y(X)((X>0)-(X<0)) + #define x o,p; Window m; + #define ghj unsigned int* + #define I(aa,bb)aa##bb + #define JJ(X)\ + ));return 0;}X + z r();int main + (z X,char**Y){ + clock_t q=0;(X + ==2)&&(f=atof(Y[1])),((i + =XOpenDisplay(0) )==0)&&(exit(1 + ),1),j=I(Defa, ultScreen)(i), + g=s(I(Display, + Width)(i,j)-1) + ,h=I(DisplayH, + eight)(i,j)-1; + for(;;((I(clo, + ck)()-q)*100>( + CLOCKS_PER_SEC + ))&&(r(),q=clock()));} + #include __FILE__ +#endif diff --git a/_includes/2001-schweikh.c.inc b/_includes/2001-schweikh.c.inc new file mode 100644 index 0000000..38ed444 --- /dev/null +++ b/_includes/2001-schweikh.c.inc @@ -0,0 +1 @@ +main(int c,char**v){return!m(v[1],v[2]);}m(char*s,char*t){return*t-42?*s?63==*t|*s==*t&&m(s+1,t+1):!*t:m(s,t+1)||*s&&m(s+1,t);} \ No newline at end of file diff --git a/_includes/2001-westley.c.inc b/_includes/2001-westley.c.inc new file mode 100644 index 0000000..5a64a42 --- /dev/null +++ b/_includes/2001-westley.c.inc @@ -0,0 +1,37 @@ +main(i)??<char c??(81??)??(81??);for(i=0;gets(*(c+i)); i++);A(i,c);J(i-1,c);??> + /* { /KC 0000 K } */ +S(c,r,i)char*c; ??<printf("|");for(;*(c+i); i++)putchar(T(*(c+i),r));U(c,i);??> + + char* B,*r; X(c,k)??<return isupper(c)?0:V(*(r+k),B); ??> +J(i,c,j)char*c; ??<for(j=t(i,0) ; j+j<i; j++)L(c,j,i-j); M(i,c); ??> + U(c,i)char*c; ??<while(i++<80)printf(" "); puts("|"); ??> + +A(i ,c,j ,k) char *c; ??< for(j= -1; ++j<i; )for (k =j; k<i; )D(c ,j, k++); ??> +R(c,r) char *c; ??< printf( "/%-80s|??/n" ,c); for (; r< 13; r++)S (c,r,0); ??> + t(a,b)??<return a;??> + +M(i,c)char c??(81??)??(81??);??<i++;while(i--)t(1,0)?puts(*(c+i)):P(*(c+i));??> + char*d= "yyzzyzz zz z0y000 zz 00yzz00y00yzz Brian Westley zyy00yy0yy 0" ; ; ; +#define t(a,b) t(b,a) + +char* K;Y (c ,r) ??< int i=V ( tolower (c) ,K); return(i <0)?1 :Z(c ,r, i); ??> +char*m= "7831734578 9547693564569528334164263z284106579 52626423135477"; ; ; ; +P(c)char*c; ??<Q(1,0); R(c,1 ); Q(0,0); ??> + +char* d,*m,*B; Z(c,i,k)??<return W(i, V(*(d+k), B),V(*( m+k),B) ,X(c, k)); ??> +char*K= "gh$j|lm'pq&rv<x>z#);@_winky,.%/+*!=3-284106579 (:obfuscated??/?" ; ; + L(c,i,j)char c??(81??)??(81??);??<G(* (c+i),*(c+j));??> + char*r= "008y8yy8yyyyz8z8z88888z0yyz888 8888 88y00zz00z0088"; +D(c,i,j) char c??(81??)??(81??);??<E(*(c+i),*(c+j));??> + + E(r,s)char*r,*s; ??< if(t( 0,1)&& F(r,s)<0)G(r,s); ??> +H()??<static i=0; if (!i) ??< time(&i); srand(i); ??> return rand()-rand(); ??> +F(r,s)char*r,*s; ??<return t(0,1)?H():strcmp(r,s); ??> + + T(c,r) ??< return Y(c, r)?'??(' :' '; ??> +G(r,s)char*r,*s; ??<char t??( 81??); strcpy(t,r); strcpy(r,s); strcpy(s,t); ??> + W(r,a,b,c)??<return r==a||r==b||r==c; ??> + +Q(t,i)??< printf(t?" ":"|"); for(; i<80; i++) printf("_"); puts(t?"_":"|"); ??> + char*B=" yz0123456789"; +V(c,k,i) char*k; ??<for (i=0; *(k+i) &&*(k+i)!=c; i++); return *(k+i)?i:-1; ??> \ No newline at end of file diff --git a/_includes/2001-williams.c.inc b/_includes/2001-williams.c.inc new file mode 100644 index 0000000..722c887 --- /dev/null +++ b/_includes/2001-williams.c.inc @@ -0,0 +1,72 @@ +#include <X11/Xlib.h> +#include <unistd.h> +typedef long O; typedef struct { O b,f,u,s,c,a,t,e,d; } C; +Display *d; Window w; GC g; XEvent e; +char Q[] = "Level %d Score %d", m[222]; +#define N(r) (random()%(r)) +#define U I[n++]=L[n]=l; n%=222 +#define K c=-l.u; l=I[i]; l.t=0; c+=l.u +#define E l.e--&&!--L[l.e].d&&(L[l.e].t=3) +#define M(a,e,i,o) a[0]=e,(a[1]=i)&&XFillPolygon(d,w,g,(void*)a,o,1,1) +#define F return +#define R while( +#define Y if(l.t + + + O p ,B, + D,A=6,Z ,S=0,v= + 0,n=0,W=400 ,H=300,a[7] + ={ 33,99, 165, 231,297,363} ; + XGCValues G={ 6,0 ,~0L,0,1} ; short + T[]={ 0,300,-20,0,4 ,-20,4,10,4,-5,4,5, + 4,-20,4,20,4,-5,4,5,4, -10,4,20},b[]={ 0,0,4, + 0,-4,4,-4,-4,4,-4,4,4} ; C L[222],I[222];dC(O x){ + M(T,a[x],H,12); } Ne(C l,O s) { l.f=l.a=1; l.b=l.u=s; + l.t=16; l.e=0; U; } nL(O t,O a,O b,O x,O y,O s,O p){ C l; + l.d=0; l.f=s; l.t=t; y-=l.c=b; l.e=t==2?x:p; x-=l.s=a;s=(x|1) + %2*x; t=(y|1)%2*y; l.u=(a=s>t?s: t)>>9;l.a=(x<<9)/a;l.b=(y<<9)/a; + U; } di(C I){ O p,q,r,s,i=222;C l; B=D=0; R i--){ l=L[i]; Y>7){ p=I.s + -l.s>>9; q=I.c-l.c>>9; r=l.t==8?l.b: l.a; s=p*p+q*q; if(s<r*r||I.t==2&&s< + 26) F S+=10; s=(20<<9)/(s|1); B+=p*s; D+=q*s; }} F 0; } hi(O x,O d){ O i=A; + R i--&&(x<a[i]-d||x>a[i]+d)); F i; } dL(){ O c,r=0, i=222,h; C l; R i--){ l=L[i]; + Y){ r++;c=l.f; Y==3){c=l.u; l.t=0; E; }R c--){-- l.u;h=l.c>>9; Y>7){XDrawArc(d,w,g, +(l.s>>9)-++l.a,h-l.a,l.a*2,l.a*2,0 ,90<<8); if(!l.u){ I[i].t-=8; l=I[i]; } } else Y==2)M +(b,l.s>>9,h,6); else XDrawPoint(d ,w,g,(l.s+=l.a)>>9, h=(l.c+=l.b)>>9); Y==4&&!l.u){ Ne +(l,20); K; } Y&&l.t<3&&(di(l)||h> H)){ if(h>H&&(c=hi( l.s>>9,25))>=0){ dC(c); a[c]=a[-- +A]; }Ne(l,30); Y==1){ E;K; } else c=l.t=0;} Y==1&&h<H -75&&!N(p*77)){ do{ nL(1,l.s,l.c, + N(W<<9),H<<9,1,i+ + 1); I[i].d++; + }R N(3) + + ); K; + l.u=c; c=0; } Y + ==2){ l.s+=l.a+B; + l.a= (l.e-l.s)/((H+ + 20-h)|1); l.c+=l.b+D; + M(b,l.s>>9,l.c>>9,6); } + } L[i]=l; } } F r; } J(){ + R A) { XFlush(d); v&&sleep( + 3); Z=++v*10; p=50-v; v%2&&hi + ((a[A]=N(W-50)+25),50)<0 &&A++; + XClearWindow (d,w); for(B=0; B<A; + dC(B++)); R Z|dL()){ Z&&!N(p)&&(Z-- + ,nL(1+!N(p),N(W<<9), 0,N(W<<9),H<<9,1 + ,0)); usleep(p*200); XCheckMaskEvent(d, + 4,&e)&&A&&--S&&nL(4,a[N(A)]<<9,H-10<<9,e. + xbutton.x<<9,e.xbutton.y<<9,5,0);}S+=A*100; + B=sprintf(m,Q,v,S); XDrawString(d,w + ,g,W/3,H/2,m,B); } } + +main () +{ +O i=2; +d=XOpenDisplay(0); +w=RootWindow(d,0); +R i--) XMapWindow(d,w=XCreateSimpleWindow(d,w,0,0,W,H,0,0,0)); +XSelectInput(d,w,4|1<<15); +XMaskEvent(d,1<<15,&e); +g=XCreateGC(d,w,829,&G); +srandom(time(0)); +J(); +puts(m); +} diff --git a/_includes/2001-williams.patch.inc b/_includes/2001-williams.patch.inc new file mode 100644 index 0000000..3eec5fd --- /dev/null +++ b/_includes/2001-williams.patch.inc @@ -0,0 +1,10 @@ +--- williams.c ++++ williams.c +@@ -64,7 +64,6 @@ + w=RootWindow(d,0); + R i--) XMapWindow(d,w=XCreateSimpleWindow(d,w,0,0,W,H,0,0,0)); + XSelectInput(d,w,4|1<<15); +-XMaskEvent(d,1<<15,&e); + g=XCreateGC(d,w,829,&G); + srandom(time(0)); + J(); \ No newline at end of file diff --git a/_includes/audio.html b/_includes/audio.html new file mode 100644 index 0000000..fae841a --- /dev/null +++ b/_includes/audio.html @@ -0,0 +1,4 @@ +
+ +
音:{{ include.desc }}{% if include.cite %}(引用元:{{ include.cite }}){% endif %}
+
diff --git a/_src/2001/anonymous.c b/_src/2001/anonymous.c new file mode 100644 index 0000000..2ec73c9 --- /dev/null +++ b/_src/2001/anonymous.c @@ -0,0 +1,39 @@ +#define processor x86 + +#include +#include + +#define l int* +#define F char + struct stat t; +#define c return +#define I (P+=4,*L(P-4,0)) +#define G (signed F)E(*L(P++,0)) +#define C(O,D)E (D[B+V(010)/4+O*10]) +#define U R[4]=E(V(17)-4),*(l)V(021)= +F M [99],Q[99],b[9999],*ss,*d=b,*z; +#define O =(n=*(l)V(021),R[4]=E(V(17)+4),n) +#define p(a,b,c) system((sprintf(a,b,k[1]),c)),z +#define g (y/010&7) +#define R (B+13) +#define x86 (F*)index\ +(ss+V(i ),0100) +#define D(y,n,a,m,i,c )d+=sprintf( d,y,n,a,m,i,c ),(F*\ + ) P + l B,i,n,a,r,y , + P ; +#define Tr(an,sl,at,or) l an##i(d,sl){ c at? an##i(d,r):or; } \ +l an(d, sl){ c \ +r=V(014 )&63,an##i(d,sl); } +#define add(Ev,Gv) Ev(){ i=((a-=16)+C(r,4))/4,(\ +Gv?Ev() :0) ; } Ev##n(){ a=C(r,5),Ev(); } +Tr(L,r, C(r,3)&&C(r,3)<=d?(l)(((int)B)+d+C(r,4)-C(r,3)):(((int)B)^d)>>24&&--\ +r,(l)d) Tr(Run,a,(ss=strcmp((F*)B+C((V(12)>>16),4)+C(--r,0),A(.strtab))?ss:(F\ +*)B+C(r ,4),C(r,1)-2),0) add(Sca ,V(-~i)-P+2) add(ru,strcmp(ss+V(i),A(main))) +E(DX) { c *z? DX:DX <<030|(DX&65280)<<010|DX>>8&65280|DX>>24&0377; } l K(k){ +c L(E(k [(l)V(17)]),0); } V(v){ c E(B[v]); } + + +main (char *ck, char **k) { + exit(E((ck?main((z?(stat(M,&t)?P+=a+'{'?0:3:execv(M,k),a=G,i=P,y=G&255,sprintf(Q,y/'@'-3?A(*L(V(%d+%d)+%d,0)):A(R[%d]),(y&7),'\r',y/0100-1?0:G),(a+127&&a+'}'&&a+1?(a+61&&a+24&&a+025?(P=a+'H'&&a%061<=0?P:i,D(a>0?" R[%d]=E(~-E(R[%d])),\0 U R[%d],\0 R[%d] O,\0 U %d,\0R[%d]=0,"+(a&'8')*3:a <- 'c'?" %d, %c%s = R[%d], \0 %d, *R=%c%s==R[%d], \0 R[%d]=(int)%c%s,"-a%'w'%'j'*5:"%d,%d,%s=%d,",a>0?a-'h'?a-49?a&7:g:I:g,a>0?a&7:"& "[a%3%2+1],a+72?Q:A(*R),a>0|a<-99?g:I,0)):(P=i,i=a+61?a+21?E(I):G:0,D(a%' '+29+"P O,\0 U %d,P=%d,",P,P+i,0,0,0),p(d,"A'",b))):(n=g-4?g%5-1?a+127?G:I:0:(Scan(),*( x86?processor :d)=0,(int)(ss+V(i))),g%5<2?D(g%5?" %s=E(~-E(%s)), \0 U %s,"+4*g:"%s=E(E(%s)%c%d),",Q,Q,"+ - "[g],n,0):(a=G-'u'?'!':'=',D(g-4?"P=%d%c=%s?%d:%d,":"*R=E(((int(*)(l,l,l))%s)(K(1),K(2),K(3))),P O,",n,a,Q,P,P+G),p(d,"A'",b))))):(Run((z=(F*)&ck,stat(k[1],&t),B=(l)mmap(0,i=t.st_size,3,1,open(k[1],2),0))),magic((R[4]=E(B+i/4),run(),P=V(-~i),U 0)),sprintf(M,A(.%s%d),k[1],P),D("%s %s '-DX=A(%s)' -o %s '-Dmagic=",X,__FILE__,X,M,fflush(0)))),k):p(M,A(rm -f .%s*),M),*R))); +} diff --git a/_src/2001/bellard.c b/_src/2001/bellard.c new file mode 100644 index 0000000..577fcf3 --- /dev/null +++ b/_src/2001/bellard.c @@ -0,0 +1,446 @@ +#include +#define k *(int*) +#define a if( +#define c ad() +#define i else +#define p while( +#define x *(char*) +#define b == +#define V =calloc(1,99999) +#define f () +#define J return +#define l ae( +#define n e) +#define u d!= +#define F int +#define y (j) +#define r m= +#define t +4 +F d,z,C,h,P,K,ac,q,G,v,Q,R,D,L,W,M; +E(n{ +x D++=e; +} +o f{ +a L){ +h=x L++; +a h b 2){ +L=0; +h=W; +} +} +i h=fgetc(Q); +} +X f{ +J isalnum(h)|h b 95; +} +Y f{ +a h b 92){ +o f; +a h b 110)h=10; +} +} +c{ +F e,j,m; +p isspace(h)|h b 35){ +a h b 35){ +o f; +c; +a d b 536){ +c; +E(32); +k d=1; +k(d t)=D; +} +p h!=10){ +E(h); +o f; +} +E(h); +E(2); +} +o f; +} +C=0; +d=h; +a X f){ +E(32); +M=D; +p X f){ +E(h); +o f; +} +a isdigit(d)){ +z=strtol(M,0,0); +d=2; +} +i{ +x D=32; +d=strstr(R,M-1)-R; +x D=0; +d=d*8+256; +a d>536){ +d=P+d; +a k d b 1){ +L=k(d t); +W=h; +o f; +c; +} +} +} +} +i{ +o f; +a d b 39){ +d=2; +Y f; +z=h; +o f; +o f; +} +i a d b 47&h b 42){ +o f; +p h){ +p h!=42)o f; +o f; +a h b 47)h=0; +} +o f; +c; +} +i{ +e="++#m--%am*@R<^1c/@%[_[H3c%@%[_[H3c+@.B#d-@%:_^BKd<>`/03e<=0f>=/f<@.f>@1f==&g!='g&&k||#l&@.BCh^@.BSi|@.B+j~@/%Yd!@&d*@b"; +p j=x e++){ +r x e++; +z=0; +p(C=x e++-98)<0)z=z*64+C+64; +a j b d&(m b h|m b 64)){ +a m b h){ +o f; +d=1; +} +break; +} +} +} +} +} +l g){ +p g&&g!=-1){ +x q++=g; +g=g>>8; +} +} +A(n{ +F g; +p n{ +g=k e; +k e=q-e-4; +e=g; +} +} +s(g,n{ +l g); +k q=e; +e=q; +q=q t; +J e; +} +H(n{ +s(184,n; +} +B(n{ +J s(233,n; +} +S(j,n{ +l 1032325); +J s(132+j,n; +} +Z(n{ +l 49465); +H(0); +l 15); +l e+144); +l 192); +} +N(j,n{ +l j+131); +s((e<512)<<7|5,n; +} +T y{ +F g,e,m,aa; +g=1; +a d b 34){ +H(v); +p h!=34){ +Y f; +x v++=h; +o f; +} +x v=0; +v=v t&-4; +o f; +c; +} +i{ +aa=C; +r z; +e=d; +c; +a e b 2){ +H(m); +} +i a aa b 2){ +T(0); +s(185,0); +a e b 33)Z(m); +i l m); +} +i a e b 40){ +w f; +c; +} +i a e b 42){ +c; +e=d; +c; +c; +a d b 42){ +c; +c; +c; +c; +e=0; +} +c; +T(0); +a d b 61){ +c; +l 80); +w f; +l 89); +l 392+(e b 256)); +} +i a n{ +a e b 256)l 139); +i l 48655); +q++; +} +} +i a e b 38){ +N(10,k d); +c; +} +i{ +g=k e; +a!g)g=dlsym(0,M); +a d b 61&j){ +c; +w f; +N(6,g); +} +i a u 40){ +N(8,g); +a C b 11){ +N(0,g); +l z); +c; +} +} +} +} +a d b 40){ +a g b 1)l 80); +r s(60545,0); +c; +j=0; +p u 41){ +w f; +s(2393225,j); +a d b 44)c; +j=j t; +} +k r j; +c; +a!g){ +e=e t; +k e=s(232,k n; +} +i a g b 1){ +s(2397439,j); +j=j t; +} +i{ +s(232,g-q-5); +} +a j)s(50305,j); +} +} +O y{ +F e,g,m; +a j--b 1)T(1); +i{ +O y; +r 0; +p j b C){ +g=d; +e=z; +c; +a j>8){ +r S(e,m); +O y; +} +i{ +l 80); +O y; +l 89); +a j b 4|j b 5){ +Z(n; +} +i{ +l n; +a g b 37)l 146); +} +} +} +a m&&j>8){ +r S(e,m); +H(e^1); +B(5); +A(m); +H(n; +} +} +} +w f{ +O(11); +} +U f{ +w f; +J S(0,0); +} +I y{ +F m,g,e; +a d b 288){ +c; +c; +r U f; +c; +I y; +a d b 312){ +c; +g=B(0); +A(m); +I y; +A(g); +} +i{ +A(m); +} +} +i a d b 352|d b 504){ +e=d; +c; +c; +a e b 352){ +g=q; +r U f; +} +i{ +a u 59)w f; +c; +g=q; +r 0; +a u 59)r U f; +c; +a u 41){ +e=B(0); +w f; +B(g-q-5); +A(n; +g=e t; +} +} +c; +I(&m); +B(g-q-5); +A(m); +} +i a d b 123){ +c; +ab(1); +p u 125)I y; +c; +} +i{ +a d b 448){ +c; +a u 59)w f; +K=B(K); +} +i a d b 400){ +c; +k j=B(k j); +} +i a u 59)w f; +c; +} +} +ab y{ +F m; +p d b 256|u-1&!j){ +a d b 256){ +c; +p u 59){ +a j){ +G=G t; +k d=-G; +} +i{ +k d=v; +v=v t; +} +c; +a d b 44)c; +} +c; +} +i{ +A(k(d t)); +k d=q; +c; +c; +r 8; +p u 41){ +k d=m; +r m t; +c; +a d b 44)c; +} +c; +K=G=0; +l 15042901); +r s(60545,0); +I(0); +A(K); +l 50121); +k r G; +} +} +} +main(g,n{ +Q=stdin; +a g-->1){ +e=e t; +Q=fopen(k e,"r"); +} +D=strcpy(R V," int if else while break return for define main ")+48; +v V; +q=ac V; +P V; +o f; +c; +ab(0); +J(*(int(*)f)k(P+592))(g,n; +} + diff --git a/_src/2001/bellard.new.c b/_src/2001/bellard.new.c new file mode 100644 index 0000000..70c6eb1 --- /dev/null +++ b/_src/2001/bellard.new.c @@ -0,0 +1,448 @@ +#include +#include +#include +#define k *(int*) +#define a if( +#define c ad() +#define i else +#define p while( +#define x *(char*) +#define b == +#define V =mmap(NULL, 99999/16*16+16, PROT_EXEC | PROT_WRITE | PROT_READ, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0) +#define f () +#define J return +#define l ae( +#define n e) +#define u d!= +#define F int +#define y (j) +#define r m= +#define t +4 +F d,z,C,h,P,K,ac,q,G,v,Q,R,D,L,W,M; +E(n{ +x D++=e; +} +o f{ +a L){ +h=x L++; +a h b 2){ +L=0; +h=W; +} +} +i h=fgetc(Q); +} +X f{ +J isalnum(h)|h b 95; +} +Y f{ +a h b 92){ +o f; +a h b 110)h=10; +} +} +c{ +F e,j,m; +p isspace(h)|h b 35){ +a h b 35){ +o f; +c; +a d b 536){ +c; +E(32); +k d=1; +k(d t)=D; +} +p h!=10){ +E(h); +o f; +} +E(h); +E(2); +} +o f; +} +C=0; +d=h; +a X f){ +E(32); +M=D; +p X f){ +E(h); +o f; +} +a isdigit(d)){ +z=strtol(M,0,0); +d=2; +} +i{ +x D=32; +d=strstr(R,M-1)-R; +x D=0; +d=d*8+256; +a d>536){ +d=P+d; +a k d b 1){ +L=k(d t); +W=h; +o f; +c; +} +} +} +} +i{ +o f; +a d b 39){ +d=2; +Y f; +z=h; +o f; +o f; +} +i a d b 47&h b 42){ +o f; +p h){ +p h!=42)o f; +o f; +a h b 47)h=0; +} +o f; +c; +} +i{ +e="++#m--%am*@R<^1c/@%[_[H3c%@%[_[H3c+@.B#d-@%:_^BKd<>`/03e<=0f>=/f<@.f>@1f==&g!='g&&k||#l&@.BCh^@.BSi|@.B+j~@/%Yd!@&d*@b"; +p j=x e++){ +r x e++; +z=0; +p(C=x e++-98)<0)z=z*64+C+64; +a j b d&(m b h|m b 64)){ +a m b h){ +o f; +d=1; +} +break; +} +} +} +} +} +l g){ +p g&&g!=-1){ +x q++=g; +g=g>>8; +} +} +A(n{ +F g; +p n{ +g=k e; +k e=q-e-4; +e=g; +} +} +s(g,n{ +l g); +k q=e; +e=q; +q=q t; +J e; +} +H(n{ +s(184,n; +} +B(n{ +J s(233,n; +} +S(j,n{ +l 1032325); +J s(132+j,n; +} +Z(n{ +l 49465); +H(0); +l 15); +l e+144); +l 192); +} +N(j,n{ +l j+131); +s((e<512)<<7|5,n; +} +T y{ +F g,e,m,aa; +g=1; +a d b 34){ +H(v); +p h!=34){ +Y f; +x v++=h; +o f; +} +x v=0; +v=v t&-4; +o f; +c; +} +i{ +aa=C; +r z; +e=d; +c; +a e b 2){ +H(m); +} +i a aa b 2){ +T(0); +s(185,0); +a e b 33)Z(m); +i l m); +} +i a e b 40){ +w f; +c; +} +i a e b 42){ +c; +e=d; +c; +c; +a d b 42){ +c; +c; +c; +c; +e=0; +} +c; +T(0); +a d b 61){ +c; +l 80); +w f; +l 89); +l 392+(e b 256)); +} +i a n{ +a e b 256)l 139); +i l 48655); +q++; +} +} +i a e b 38){ +N(10,k d); +c; +} +i{ +g=k e; +a!g)g=dlsym(0,M); +a d b 61&j){ +c; +w f; +N(6,g); +} +i a u 40){ +N(8,g); +a C b 11){ +N(0,g); +l z); +c; +} +} +} +} +a d b 40){ +a g b 1)l 80); +r s(60545,0); +c; +j=0; +p u 41){ +w f; +s(2393225,j); +a d b 44)c; +j=j t; +} +k r j; +c; +a!g){ +e=e t; +k e=s(232,k n; +} +i a g b 1){ +s(2397439,j); +j=j t; +} +i{ +s(232,g-q-5); +} +a j)s(50305,j); +} +} +O y{ +F e,g,m; +a j--b 1)T(1); +i{ +O y; +r 0; +p j b C){ +g=d; +e=z; +c; +a j>8){ +r S(e,m); +O y; +} +i{ +l 80); +O y; +l 89); +a j b 4|j b 5){ +Z(n; +} +i{ +l n; +a g b 37)l 146); +} +} +} +a m&&j>8){ +r S(e,m); +H(e^1); +B(5); +A(m); +H(n; +} +} +} +w f{ +O(11); +} +U f{ +w f; +J S(0,0); +} +I y{ +F m,g,e; +a d b 288){ +c; +c; +r U f; +c; +I y; +a d b 312){ +c; +g=B(0); +A(m); +I y; +A(g); +} +i{ +A(m); +} +} +i a d b 352|d b 504){ +e=d; +c; +c; +a e b 352){ +g=q; +r U f; +} +i{ +a u 59)w f; +c; +g=q; +r 0; +a u 59)r U f; +c; +a u 41){ +e=B(0); +w f; +B(g-q-5); +A(n; +g=e t; +} +} +c; +I(&m); +B(g-q-5); +A(m); +} +i a d b 123){ +c; +ab(1); +p u 125)I y; +c; +} +i{ +a d b 448){ +c; +a u 59)w f; +K=B(K); +} +i a d b 400){ +c; +k j=B(k j); +} +i a u 59)w f; +c; +} +} +ab y{ +F m; +p d b 256|u-1&!j){ +a d b 256){ +c; +p u 59){ +a j){ +G=G t; +k d=-G; +} +i{ +k d=v; +v=v t; +} +c; +a d b 44)c; +} +c; +} +i{ +A(k(d t)); +k d=q; +c; +c; +r 8; +p u 41){ +k d=m; +r m t; +c; +a d b 44)c; +} +c; +K=G=0; +l 15042901); +r s(60545,0); +I(0); +A(K); +l 50121); +k r G; +} +} +} +main(g,n{ +Q=stdin; +a g-->1){ +e=e t; +Q=fopen(k e,"r"); +} +D=strcpy(R V," int if else while break return for define main ")+48; +v V; +q=ac V; +P V; +o f; +c; +ab(0); +J(*(int(*)f)k(P+592))(g,n; +} + diff --git a/_src/2001/cheong.c b/_src/2001/cheong.c new file mode 100644 index 0000000..20c87c5 --- /dev/null +++ b/_src/2001/cheong.c @@ -0,0 +1,12 @@ +#include +int l;int main(int o,char **O, +int I){char c,*D=O[1];if(o>0){ +for(l=0;D[l ];D[l +++]-=10){D [l++]-=120;D[l]-= +110;while (!main(0,O,l))D[l] ++= 20; putchar((D[l]+1032) +/20 ) ;}putchar(10);}else{ +c=o+ (D[I]+82)%10-(I>l/2)* +(D[I-l+I]+72)/10-9;D[I]+=I<0?0 +:!(o=main(c/10,O,I-1))*((c+999 +)%10-(D[I]+92)%10);}return o;} diff --git a/_src/2001/coupard.c b/_src/2001/coupard.c new file mode 100644 index 0000000..b5cf042 --- /dev/null +++ b/_src/2001/coupard.c @@ -0,0 +1,42 @@ +#include +#include + +#define k ("C9B7351A@D-/E+F?')G>H%J#=I"[(d[(i/13)*2]*91+d[(i/13)*2+1]-3220)&(\ +4096>>(i%13))?l+1:l]-59) +#define g(n)e(n<13?n:n<20?n+1:n>20?11+n/10:13,0);e(n>12&&n<20?26:n>20&&n%10?n%\ +10:-1,2); +#define x(n)g(localtime(&a)->tm_##n) + +unsigned char *d="KZs2ITTwhwZYvec@JbYxOjf9-TZRGDb/el7#q(`SZ#|_neTwq\\MqJ5cVgte\ +K-ReK-(Mq8+D'6Ui0tG88vXJ-Tu{VI=d%cR]h7CumwBq\\-#{thj8fw$OEfEvLHP13_##w.OD[7Cw2\ +]zSf>p]ZrJ_[9q?qgYe^4$r3lY$4SdsSyNv\ +J_l&w2I?q#fN*F1n|s9OGUv|w&l+pR-3Nudtyn@|Dfq#^o|s9Pt=oZCol/{VdgkLdwyn1yDed}?Dzi\ +}#Kje#d}Y${8pStK$t?yLbwtUn[F{ncOx_.:K#nwF#f|HQs&<&bfQPE?:uJm*&\\S=*/@|We*w@$@\ +f0,*H])WLMV*p{Zqf&zH%###################u2#A#_$A#_$A#_$A#_$@tA#QI#\ +3#0&:p#?1[P*6WQ@i#C1{[;@|1}S%^r#g.d^z#M}$ziZe|kU6oZbq5$kF]4[E^nA#_.|}e$Ku^r&WA\ +#_$?/*P_$@t&gA#[;_$A#^j2#A#_*d}@v^z#8?D?D9Q`s}$5$L|u<3JC/xVz;#s^{?9$M}$x_Y,7uP\ +$",p[6789]; + +int o[]={145,1145,1745,2545,3045,4045,4345,5145,5745,6369},i=0,j=0,l=0; + +void e(n,h){ + for(j=0;n>0;n-=!(p[j++]^9)); + for(;!n&&j[p]^9;j++)write(1,p+p[j][o],o[p[j]+1]-p[j][o]); + for(i=0;i=0?j<*o?k-2:(p[j+1]=k<<4):0,j+=k>=0?1+(j>=*o):0, + l=-k*(k<0),i++);e(21,4);x(hour)e(22,1);x(min)e(23,1);e(25,0);x(sec)e(24,0); + + return;} diff --git a/_src/2001/ctk.c b/_src/2001/ctk.c new file mode 100644 index 0000000..b371fbe --- /dev/null +++ b/_src/2001/ctk.c @@ -0,0 +1,25 @@ +#include +#include +#include +#include +#include +#define m(b)a=b;z=*a;while(*++a){y=*a;*a=z;z=y;} +#define h(u)G=u<<3;printf("\e[%uq",l[u]) +#define c(n,s)case n:s;continue +char x[]="((((((((((((((((((((((",w[]= +"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b";char r[]={92,124,47},l[]={2,3,1 +,0};char*T[]={" |"," |","%\\|/%"," %%%",""};char d=1,p=40,o=40,k=0,*a,y,z,g= +-1,G,X,**P=&T[4],f=0;unsigned int s=0;void u(int i){int n;printf( +"\233;%uH\233L%c\233;%uH%c\233;%uH%s\23322;%uH@\23323;%uH \n",*x-*w,r[d],*x+*w +,r[d],X,*P,p+=k,o);if(abs(p-x[21])>=w[21])exit(0);if(g!=G){struct itimerval t= +{0,0,0,0};g+=((g> +3)+1);setitimer(0,&t,0);f&&printf("\e[10;%u]",g+24);}f&&putchar(7);s+=(9-w[21] +)*((g>>3)+1);o=p;m(x);m(w);(n=rand())&255||--*w||++*w;if(!(**P&&P++||n&7936)){ +while(abs((X=rand()%76)-*x+2)-*w<6);++X;P=T;}(n=rand()&31)<3&&(d=n);!d&&--*x<= +*w&&(++*x,++d)||d==2&&++*x+*w>79&&(--*x,--d);signal(i,u);}void e(){signal(14, +SIG_IGN);printf("\e[0q\ecScore: %u\n",s);system("stty echo -cbreak");}int main +(int C,char**V){atexit(e);(C<2||*V[1]!=113)&&(f=(C=*(int*)getenv("TERM"))==( +int)0x756E696C||C==(int)0x6C696E75);srand(getpid());system("stty -echo cbreak" +);h(0);u(14);for(;;)switch(getchar()){case 113:return 0;case 91:case 98:c(44,k +=-1);case 32:case 110:c(46,k=0);case 93:case 109:c(47,k=1);c(49,h(0));c(50,h(1 +));c(51,h(2));c(52,h(3));}} diff --git a/_src/2001/ctk.new.c b/_src/2001/ctk.new.c new file mode 100644 index 0000000..6aba649 --- /dev/null +++ b/_src/2001/ctk.new.c @@ -0,0 +1,25 @@ +#include +#include +#include +#include +#include +#define m(b)a=b;z=*a;while(*++a){y=*a;*a=z;z=y;} +#define h(u)G=u<<3;printf("\e[%uq",l[u]) +#define c(n,s)case n:s;continue +char x[]="((((((((((((((((((((((",w[]= +"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b";char r[]={92,124,47},l[]={2,3,1 +,0};char*T[]={" |"," |","%\\|/%"," %%%",""};char d=1,p=40,o=40,k=0,*a,y,z,g= +-1,G,X,**P=&T[4],f=0;unsigned int s=0;void u(int i){int n;printf( +"\x1b[H\x1b[L\x1b[;%uH%c\x1b[;%uH%c\x1b[;%uH%s\x1b[22;%uH@\x1b[23;%uH \n",*x-*w,r[d],*x+*w +,r[d],X,*P,p+=k,o);if(abs(p-x[21])>=w[21])exit(0);if(g!=G){struct itimerval t= +{0,0,0,0};g+=((g> +3)+1);setitimer(0,&t,0);f&&printf("\e[10;%u]",g+24);}f&&putchar(7);s+=(9-w[21] +)*((g>>3)+1);o=p;m(x);m(w);(n=rand())&255||--*w||++*w;if(!(**P&&P++||n&7936)){ +while(abs((X=rand()%76)-*x+2)-*w<6);++X;P=T;}(n=rand()&31)<3&&(d=n);!d&&--*x<= +*w&&(++*x,++d)||d==2&&++*x+*w>79&&(--*x,--d);signal(i,u);}void e(){signal(14, +SIG_IGN);printf("\e[0q\ecScore: %u\n",s);system("stty echo -cbreak");}int main +(int C,char**V){atexit(e);(C<2||*V[1]!=113)&&(f=(C=*(int*)getenv("TERM"))==( +int)0x756E696C||C==(int)0x6C696E75);srand(getpid());system("stty -echo cbreak" +);h(0);u(14);for(;;)switch(getchar()){case 113:return 0;case 91:case 98:c(44,k +=-1);case 32:case 110:c(46,k=0);case 93:case 109:c(47,k=1);c(49,h(0));c(50,h(1 +));c(51,h(2));c(52,h(3));}} diff --git a/_src/2001/dgbeards.c b/_src/2001/dgbeards.c new file mode 100644 index 0000000..dea802f --- /dev/null +++ b/_src/2001/dgbeards.c @@ -0,0 +1,162 @@ +#include +#include +#include +#define A(x,y) i[a++]=(N){c,c+x,y}; +#define B(x,y) j[b++]=(N){c,c+x,y}; +#define C(j,k) for (j=0; j0)E; else A(_,0)_+=v; } +#define X(x) G(x,L) +#define Z(x,y) memcpy(x,y,256); + +typedef struct { +F a,b,c; +} N; + +F g[]="KSLAU", +p[256],v[]="{ ; } ; { ; ; ; { } ; { ; } { ; } { } ; { ; ; ; { ; } ; } } ; { ; ; { } ; { } } ; { ; ; { { ; ; { } } ; } ; ; { } ; { } } ; { ; ; { { ; { } } ; { ; ; { } ; { { ; ; { } ; ; ; ; { ; } { { ; ; ; { } ; { ; ; "; +F S[]="{}; ",W[256],L[1024]; +P q[]={-14,-31,-33,-18,14,31,33,18},r[]={-1,-17,-16,-15,1,17,16,15},_,a,b,c,d,e,t=1,x,y,z; +N i[500],j[500],*k,u; +P f(N *V) { + a=b=0; + C(d,8) + C(e,8) + c=d<<4|e; + if(p[c]==0||p[c]*t<0)continue; + switch(p[c]<0?-p[c]:p[c]){ + K 80: + if(56+t*40==(c&112)&&!p[c-32*t]) + A(t*-32,0) + if(56+t*-40==(c&112)){ + if(!(c-17*t&136)&&p[c-17*t]*t<0){ + C(_,5) + B(-17*t,(g[_]^_)*t)} + } + if(!(c-15*t&136)&&p[c-15*t]*t<0){ + C(_,5) + B(-15*t,(g[_]^_)*t)} + } + C(_,5) + A(t*-16,(g[_]^_)*t)} + }else{ + if(!p[c-16*t]) + A(t*-16,0) + if(!(c-(17*t)&136)&&p[c-17*t]*t<0){ + B(-17*t,0) + } + if(!(c-(15*t)&136)&&p[c-15*t]*t<0){ + B(-15*t,0) + } + } + E; + K 78:D(q)E; + K 81: + K 66:O(17)O(-17)O(15)O(-15) + if(p[c]==66||p[c]==-66) + E; + K 82:O(1)O(-1)O(16)O(-16)E; + K 75:D(r) + } ; + } + } + if ( b > 0 ) { + C(_,b)V[_]=j[_]; } + R b; + } else { + C(_,a)V[_]=i[_]; } + R a; + } +} +F *G(F *n, F *o){ + a=b=0; + for(; n[b]; d=0){ + do{ + d*=4; + d+=W[n[b++]]; + } while(++b<8*a+8); + o[a++]=d; + } + o[a]=0; + R o; +} +m(N a){ p[a.b]=a.c?a.c:p[a.a]; p[a.a]=0; } +h(){ + J X("{ ; { { { ; ; { ; } { ; } { ; } { ; ; { ; } { ; } { ; } { ; ; { ; } { ; } { ; } { ; ; { ; } { ; } { ; } { ; ; { ; } { ; } { ; } { ; ; { ; } { ; } { ; } { ; ; { ; } { ; } { ; } { ; ; { ; } { ; } { ; } { ; ; { { ; ; ")); + c=0; C(c,120)c%8==0&&putchar(56-c/16); + if(p[c]<0){ + J X("} { { ; { { { ; ; ; { ; } } } ; { "),-p[c]); + } else if(p[c]>0) + J X("} { { ; { { { ; } } } ; { { ; { { "),p[c]); + else + J"| "); + c%8==7?J X("} { { { ; ; { ; { { { ; ; { ; } { ; } { ; } { ; ; { ; } { ; } { ; } { ; ; { ; } { ; } { ; } { ; ; { ; } { ; } { ; } { ; ; { ; } { ; } { ; } { ; ; { ; } { ; } { ; } { ; ; { ; } { ; } { ; } { ; ; { ; } { ; } { ; } { ; ; { { ; ; ")),c+=8:0; + } +} +s() { + b=0; C(a,256) + if(v[b]==94){ + b++; C(c,v[b]-32)p[a++]=v[b+1]-120;} + b+=2; a--; + } else + p[a]=v[b++]-120; + } +} +P w() { + P v=0; + C(_,120) + p[_]&&(p[_]*t>0&&v--,p[_]*t<0&&v++); + } + v+=f(i); v-=b?100:0;t=-t; v-=f(i); v+=b?100:0;t=-t; + + R v; +} +P V(P n, P o) { + P s=-I,G,H,Y; + N M[500]; + F u[256]; + + if(!(n+o))R w()+time(NULL)%9-4; + if(!(H=f(M)))R I; + H<5?H==1?n++:(o<6?o++:0):0; + Z(u,p) + C(G,H) + Z(p,u) + m(M[G]); + t=-t; + s=(e=-V(n-1,o))>s?Y=G,e:s; + t=-t; + } + e=Y; + R s; +} +main(P db, F *bd[]){ + N o[500]; + F T[256]; + + C(a,256)W[a]=-1; } + C(a,4)W[S[a]]=a; } + G(v,v); s(); + while(1){ + h(); + b=f(o); + scanf("%s",L); + if(strcmp(L,"quit")==0)R 0; + else if(strcmp(L,"g")==0){ + Z(T,p) + J G("} } } ; } ; { } } ; { } } } } ; } } { ; { { { ; } } } ; } { { { ; ; ",L), V(db>1?atoi(bd[1]):3,0)); + Z(p,T)m(o[e]); t=-t; + }else{ + u.a=896-16*L[1]; + u.b=896-16*L[3]; + u.a+=L[0]-97; + u.b+=L[2]-97; + u.c=L[4]?L[5]:0; + C(a,b) + if(u.a==o[a].a&&u.b==o[a].b&&u.c==o[a].c)E; + } + a==b?J X("} { ; } } ; { } ; { } ; } } } ; } } ; { } } ; { { ; { { } ; } } ; } } ; } ; } } { { ; ; ")):(m(u),t=-t); + } + } +} diff --git a/_src/2001/herrmann1.c b/_src/2001/herrmann1.c new file mode 100644 index 0000000..4466a28 --- /dev/null +++ b/_src/2001/herrmann1.c @@ -0,0 +1,327 @@ +#define D define +#define U undef +#define n # + + +#undef __FILE__ + n U __FILE__ + n D f __FILE__ + n D N endif + n D p e(prg) + n D e(x) #x + n D q # + n D o E #F + n D E Q( + n D G x,y,z) + n D H E y,z) + n D F ,) + n D g o else + n D d o D + n D u o U + n D w E o F D +#ifdef prg + + + +#ifndef tape +n include p +n ifndef tape +n D tape O +n endif +#endif +n D O Z(O, +n D I Z(I, +q D i tape +n U O +n U I +n D O ,) +n D I ,) +q D v tape +n U O +n U I +#undef tape + n U tape + q U tape +#endif /* tape */ + + +q ifndef P +q D H y ## z +#ifdef prg +d c 0 & 0 +d R i W v +d B Initializing... +d L V /* the turing */ +d M Y(O)/* state to */ +d S(x) T(O,1, start ##x) +#else +d c 0 +#endif +q D P P +q include f +q U Q +q D H H +q N +q U f +o ifndef P +E # D H y ## z F +d O 3 +d I 3 +d x 3 +o if c+2 +E o F include + + +int main() { + return 2+c|! + printf + ( + d y "\n" + d z ".." + d j " " + d P "*" + d k " " + o if c + w Y(Z) #Z + "Un" + "define" + "d state " + Y(B) y y +"Tape:" + o elif !c +"Usage:" + d M 0 + " prg=myprg.turing " + d L , + d R , + "[" + "tape=" + "\"" + "O I O..." + "\"" + "]" + g + "Final " +"tape:" + o N + u O + u I + d O "O" + d I "I" + g + d j _ + d z ... + d k ~ + +/*StarBox*/ +/*********/ + d P * + d y * + E E /,*) F + * + * State: B +/*********/ + + u O + u I + o N + u x + u a + u c + u B + o ifdef s + d J s + d A l + d B m + d C r + d t K + d a L + d b M + d c R + g + d J S + d A L + d B M + d C R + d T K + d a l + d b m + d c r + o N + y + + + /*Triangles*/ + d V j j j j + d W j j j j + d X(G y j + d Z(G j y + d Y(x) P + y A B C + u X + u Y + u Z + u V + u W + + d X(G y x + d Z(G x y + d V z O O + d W O O z + d Y(x) x + y A B C + u X + u Y + u Z + u V + u W + + d V k k k k + d W k k k k + d X(G y k + d Z(G k y + d Y(x) P + y A B C + u X + u Y + u Z + u V + u W + y + u j + u k + u z + u P + u y + u O + /*EndOfTriang*/ + + + /* Rain */ + o ifndef I /*/*/ /*/*/ + /*/*/*/*/*/ /*/*/ + E E /*/*/*/*/*/,/) F + d K(G /*/*/ y + o if J(x) + u K + d K(G x + w a X(J(x),A F + u K + d Z(G x + d W O + w b Y(C) + d P C + u Z + o U W + + + d Z(G z ## y + w c C + u Z + g /* <- exit */ + u K + d X(G z ## y + + + w a A + u X + d X(G x + d V O + w b Y(A) + d P A + u X + u V + d K(G x + w c Z(J(x),C F + u K + o N + u a + u b + o U c + + + d X(G J(_ ## x) + d V J(_O) + d Z(G J(_ ## x) + d W J(_O) + d Y(x) J(_ ## x) + + + o ifdef s + u t + d t(G z + d j S(x) + d k T + + g + u T +d T(G z + d j s(x) + d k t + o N + u tape + o include p + u tape + d stop_O x + d stop_I x + w a(P) O&I&x + + + d O 0 + d I 0 + d x 0 + w c a(P) + u O + u I + u x + d left 0 + d right 1 + w j k(P ## x) + u P + u left + u right + u stop_O + u stop_I + + + u Y + o U X + u V + u Z + o U W + u A + u B + o U C + u j + u k + w B J (.) + u J + u t + o U T + + + /*Codeblk*/ + o D P P + o include f + E n U Q F + E n D H H F + + + g + ); +} +w P x +o N +o N +o U f +u l +u L +o U m +u M +u r +o U R +u S +u s +o U B +u a +u c diff --git a/_src/2001/herrmann2.c b/_src/2001/herrmann2.c new file mode 100644 index 0000000..27e47aa --- /dev/null +++ b/_src/2001/herrmann2.c @@ -0,0 +1,23 @@ +char*d,A[9876];char*d,A[9876];char*d,A[9876];char*d,A[9876];char*d,A[9876];char +e;b;*ad,a,c; te;b;*ad,a,c; te;*ad,a,c; w,te;*ad,a, w,te;*ad,and, w,te;*ad, +r,T; wri; ;*h; r,T; wri; ;*h; r; wri; ;*h;_, r; wri;*h;_, r; wri;*har;_, r; wri + ;on; ;l ;i(V) ;on; ;l ;i(V) ;o ;l ;mai(V) ;o ;mai(n,V) ;main (n,V) + {-!har ; {-!har ; {har =A; {h =A;ad =A;read +(0,&e,o||n -- +(0,&e,o||n -- +(0,&o||n ,o-- +(0,&on ,o-4,- +(0,n ,o-=94,- +(0,n +,l=b=8,!( te-*A,l=b=8,!( te-*A,l=b,!( time-*A,l=b, time)|-*A,l= time(0)|-*A,l= +~l),srand (l),~l),srand (l),~l),and ,!(l),~l),a ,!(A,l),~l) ,!(d=A,l),~l) +,b))&&+((A + te,b))&&+((A + te,b))+((A -A+ te,b))+A -A+ (&te,b+A -A+(* (&te,b+A +)=+ +95>e?(*& c)=+ +95>e?(*& c) +95>e?(*& _*c) +95>(*& _*c) +95>(*&r= _*c) +95> +5,r+e-r +_:2-195,r+e-r +_:2-195+e-r +_:2-1<-95+e-r +_-1<-95+e-r ++?_-1<-95+e-r +|(d==d),!n ?*d||(d==d),!n ?*d||(d==d),!n ?*d||(d==d),!n ?*d||(d==d),!n ?*d||(d= + *( (char**)+V+ *( (char)+V+ *( (c),har)+V+ (c),har)+ (V+ (c),r)+ (V+ ( c), ++0,*d-7 ) -r+8)+0,*d-7 -r+8)+0,*d-c:7 -r+80,*d-c:7 -r+7:80,*d-7 -r+7:80,*d++-7 ++7+! r: and%9- +7+! rand%9-85 +7+! rand%95 +7+!! rand%95 +7+ rand()%95 +7+ r +-(r+o):(+w,_+ A-(r+o)+w,_+*( A-(r+o)+w,_+ A-(r=e+o)+w,_+ A-(r+o)+wri,_+ A-(r+o) ++(o)+b)),!write+(o)+b,!wri,(te+(o)+b,!write+(o=_)+b,!write+(o)+b,!((write+(o)+b +-b+*h)(1,A+b,!!-b+*h),A+b,((!!-b+*h),A+b,!!-b+((*h),A+b,!!-b+*h),A-++b,!!-b+*h) +, a >T^l,( o-95, a >T,( o-=+95, a >T,( o-95, a)) >T,( o-95, a >T,(w? o-95, a >T +++ &&r:b<<2+a ++ &&b<<2+a+w ++ &&b<<2+w ++ ) &&b<<2+w ++ &&b<<((2+w ++ && +!main(n*n,V) , !main(n,V) , !main(+-n,V) ,main(+-n,V) ) ,main(n,V) ) ,main),(n, +l)),w= +T-->o +l)),w= +T>o +l)),w=o+ +T>o +l,w=o+ +T>o;{ +l,w=o+T>o;{ +l,w &=o+ +!a;}return _+= !a;}return _+= !a;}return _+= !a;}return _+= !a;}return _+= !a;} diff --git a/_src/2001/jason.c b/_src/2001/jason.c new file mode 100644 index 0000000..1382731 --- /dev/null +++ b/_src/2001/jason.c @@ -0,0 +1,184 @@ +#include +#include +#include + +#define __ "Y\n : ! ,.?>" +#define D(f) ; } int f(int i) { return +#define E(a,b,c,d,e) b##d,c,e,a +#define e(a,b,c,d) a##b##c##d +#define B *p++ - ' ' || !p++ +#define _(k) o(*#k - 64) +#define G(g,l,k,o,e,d,n,c,i,b,a,f,j,m,p) \ +a#b#c#d#e#f#g#a#i#j#k#l#m#n#o e,i l##c,m##b; d g j n h(k 30:1); o p f} + + G(E(f ( 9) -s + ? -s + 'q' + ? f( 5 ) -s &&'d' - + s?U( 3 ) ||_(J) + :A ( s- f( 5 )) + :(c= 4 * + 4): + + g(0)D( + + V)c <= 3 *4 + 3&&c && V(X ( i) ) ; + } + + int , time ( 0)& , c - 15 || P + + (1 + +):0, + & ( !!d ( 0 ) + ||(a=! _(S)) ,b= 0 )|| + a + ?d(a = 0) + ? _ +(I): w ( j =!W(j=_ (V ))) , + + l(_ + (Y+ s ) ) + )e + + ( + main(){; + ;;;s , ra, + n, d), && C ( j +R( s-j+t( i- 1) ) + )D( W)m[ c* 4| z( j ) ] + &&_( X )E (d ( 0 + )&& R( 6)/ 6 + ? c= 17|_ ( T ) + :01,||+ + , v =i & 3 ^ 2 + ,+j & 3&&W ( j)||y ( 10 )D (k) -- + j ? k ( O[j]=R(15 )) +: 1 D + ( H )o ( 7+! ! i+3 )+ + + i? + + c=i /4 & 63, + a= 1 + +:0) + + D ( f )( p =M ,q ( i),*p+86) + D ( l) * f, B? + + B ?B ?B? B ?B ?B + ?7 :B?B ?36: 59 * 89 *5 * 2 :B?6587 + *77 :9 + 2:B ?B?B?9: 5 : 37 : B ? 5 +5:4:20: + B?B?B?32 + + :e( 4, 3 , 1 *4 * 59 * 1 , 7):B? + 17: 34 : 19 :B ? + 8 *2 :B ? + 2:26: B? + B?B ?B ? + + 82 *+ 576: B ?33 :22 :5 * 5:3 *4 :3:B ?B ?B? B ?6 + + + 17 : B?B?13:6 : 9 *2:B?15 : 7 *2 : + + B ? + B ? + 27:24: 31 : B? + + + B? + 29 :, + m [a^ 2 ] =T( 8 * 7) ;j= 3 + ; + ; + Q, ;int + P ( int + i ) + + {time_t(x ) =+ 0+ + time(0) ; j=E( u (i ) : i D(R )e(r , + a ,n ,d) ()% i+1, ( e( l , o, + caltim , e ) (& x)) ->e( tm_h , o, u , r) + ;retur , i?_( W +): _( U) D(Y) *p&& *p<3 * 11 ? + ( ++ p ), n j= + 34 +( j< 6 + ||j>19 ),Y (i) +: *p + + D ( F) i == 9 ?1 : + F( (i+ 7)% ( 7 + 3) ) +!O[ i + ]D(u) *p &&* p -32? p ++) + D (h ) i ?*++*S=i% ( 38)- 1, + D ( A )! n?i&&!g ( (0 ) ) ||K ( j=4| ! !i ) : N(!i )D( + Q)++j< + + (s ) &&Q ( t( i)^i ) + D( U )i>= 0 ?U( i- 1 )||~f (i+1 ) == ~ s + &&H (m[c* 4 |z(i)] ) +:0;D + + + ( X) + b && b<, for (*S = M ; * +p; ), + + gets ( L, + 98 , stdin ) ? + p= L, E (r( 0 ): 0 ,h( i / 38 ) : 0;D( C)! + ( m[j]+m [a= i] ) ?m[j[m]= i]=j:0;D (d) ! + b+(* O- + c)* + * O; D (z ) + + + -~- ~ -~i + + v + & 3 D(y)( putchar ) ( i) + D ( q ) i& ,!(O[j = i] + || _ ( O))+a :0; + D (w)O[ j] ==c && o + + (( !i ++ ? ! !_ (M + +): + + 0) +15)|| ++ j<9 &&w ( +i)D ( r )*p? *p -4? + * p -6 ? + y(*p <9 + 2?__[ + * p +]: * p+ 7 +79):o( j+1) : o (26+j),&q ( -! + * p ++ + i )D(x)i? a=x ( ( -- i)), ++ p ) + D( t ) i, | C((j=i* + T(i-4 )) +R + (3 ) + 4 ) + D(J) !j --E( 0 D ( K )!-!N, || i &, + _( R ) :i* c== (O + [ j ] ) &&n==f (j+ 6 + 5 * 4)?O + [j]= !i * c-_ ( L) :J(i ) + D ( N ) j=9, & d(0 )? j= 6 | ! i , J(i )D + ( o)(*S = p , ++ S,p = M , r (q (i) ),-- S, p = *S)) + ( (l (_ (Q )),n =s,i ^5 ) ) ;, E(j , + sign , v ,ed ( b ) ;; + int c =1 ,O[9]) + ;int( s +)= + E (n ;char, 1 ,a,6 ,o ())* Z[ + E(M [37 * 9 *3 ] ,0,L [ 99] ,3] , * *S=Z ) ; + E (*p=+1 ,char( m)[6 , co , 4 ],ol) + +, + V ( v=*O = k( j= 9 )) ; + return ! c&& - ~ ~ - -! printf + ( ( "%d \n") , F (P ( 0) +6) *50 + ! ! b* + ( +b - (int)time ( 0 )) ) +;, ( b= 60 + time ( 0)+ 60 * 4) ;, n =Y + (u (s =Y (i) ) ) + + : (exit( 0) + ,i)D( g )x ( _(N) ^ 9)? !( a =0) : _ ( P )D (T)! i|, + (2); s=35; Q(3); + + s=59; Q(6); + + + a=1; + + + + + ) diff --git a/_src/2001/kev.c b/_src/2001/kev.c new file mode 100644 index 0000000..b3c9673 --- /dev/null +++ b/_src/2001/kev.c @@ -0,0 +1,121 @@ +#include +#include +#include +#include +#include +#include + +#define o0(M,W) mvprintw(W,M?M-1:M,"%s%s ",M?" ":"",_) +#define O0(M,W) M##M=(M+=W##M)-W##M +#define l1(M,W) M.tv_##W##sec +#define L1(m,M,l,L,o,O) for(L=l;L--;)((char*)(m))[o]=((char*)(M))[O] +#define I1 lL,(struct sockaddr*)&il +#define i1 COLS +#define j LINES +#define L_ ((j%2)?j:j-1) + +fd_set I;struct socka\ +ddr_in il;struct host\ +ent*LI; struct timeval +IL,l;char L[9],_[1<<9] + ;void ___(int __ + ){_[__--]=+0;if( + ++__)___(--__);_ + [__]='=';}double + o,oo=+0,Oo=+0.2; + long O,OO=0,oO=1 + ,ii,iI,Ii,Ll,lL, + II=sizeof(il),Il + ,ll,LL=0,i=0,li, + lI;int main(int\ + iL,char *Li[]){\ + initscr();cbreak + ();noecho();nonl + ();___(lI=i1/4); + _[0]='[';_[lI-1] + =']';L1(&il,&_,\ + II,O,+O,+lI);il. + sin_port=htons(( + unsigned long)(\ + PORT&0xffff));lL + =l_;if(iL=!--iL) + {il. sin_addr .\ + s_addr=0;bind(I1 + ,II);listen(lL,5 + );lL=accept(I1,& + II);}else{oO-=2; + LI=gethostbyname + (Li[1]);L1(&(il. + sin_addr),(*LI). + h_addr_list[0],\ + LI->h_length,iI, + iI,iI);(*(&il)). + sin_family=(&(*\ + LI))->h_addrtype + ;connect(I1,II); + }ii=Ii=(o=i1*0.5 + )-lI/2;iI=L_-1;O + =li=L_*0.5;while + (_){mvaddch(+OO, + oo,' ');o0(ii,iI + );o0(Ii,Il-=Il); + mvprintw(li-1,Il + ,"%d\n\n%d",i,LL + );mvhline(li,+0, + '-',i1);mvaddch( + O,o,'*');move(li + ,Il);refresh();\ + timeout(+SPEED); + gettimeofday(&IL + ,+0);Ll=getch(); + timeout(0);while + (getch()!=ERR);\ + if(Ll=='q'&&iL)\ + write(lL,_+1,1); + if(ii>(ll=0)&&Ll + ==','){write(lL, + _,-(--Il));}else + if(Ll=='.'&&ii+\ + lIi1){o=i1+i1-o + ;Oo*=-1;}if(o>=( + Ii+=ll)&&O<1&&oO + <0&&o= + (ii+=Il)&&O>iI-1 +&&oO>0&&o+iI){O-=O;i++; +}}endwin();return(0);} + diff --git a/_src/2001/ollinger.c b/_src/2001/ollinger.c new file mode 100644 index 0000000..318773a --- /dev/null +++ b/_src/2001/ollinger.c @@ -0,0 +1,21 @@ +#define n ((e[++a]-42)/9-f[d+1])? +#define o printf("%c",c[" 01./:;|\\"]); + +char e[]="**3H[`mr25\ +\?Hx,P,B2Gs-KTfzRdv1SeyCR-ISeu.H[m1JSey*DH[m*3EJMUY`ejov#$59@CJOXYZbfhlnrxy&+.57=@IMR[``bcfmnq!#),@",*f; + +int main(int j,char *k[]) { + int a,b,c,d,g,h,i=19; + + printf(" "); + for(g=0[f=(char *)calloc(80+(h=atoi(1[k])),1)]=1; g<=h; g++) { + if ((g>30)&&(f[i-2]+f[i-1]!=0)) i++; + for(d=c=0; d=s(g)||s(o + )<=0)&&(k=1), + (p>=h||p<=0)&& + (l=1),(e==1)&&( + c=o,d=p,e=0,1)||( + (k==0&&o-c-(z)(a+y + (a)*.5)!=0)&&(a=o-c + ),(l^-1==-1&&p-d-(z)( + b+y(b)*.5)!=0)&&(b=p-d),a/=f,b/=f + ,k=0,l=0);(o >=s(g)||o<=0)&&(a=-a),( + p>=h||s(p)<=0) &&(b=-b),c=o,d=p,I(XWarpP + ,ointer)(i,None,None,0,0,s + (g),h,(z)(a+y(a)*.5),(int)( + b+y(b)*.5 JJ(float B;int)C,D; + #else/*Egads! something has */ + #include/*taken a*/ + #include/*huge bite o-*/ + #include/*ut of the m-*/ + #include/*ouse pointer!!!*/ + #define H(a, b) (((a)&(7<<3*(b)))>>3*(b)) + #define G(c,d) ((H(c,d)<<3*(d+1))|((H(c,d+1)<<3*d)|/* + _XSetPointer(display, screen,GREASY|BOUNCY)*/c&~(63<<3*(d)))) +#define s(e) (G(G(G(G(G(G(e,(z)0),1),2),1),0),1)) + typedef int z;float a=0,b=0,c,d,f=1.03;z e + =s(512),g,h,j; + Display/**/*i; + #define y(X)((X>0)-(X<0)) + #define x o,p; Window m; + #define ghj unsigned int* + #define I(aa,bb)aa##bb + #define JJ(X)\ + ));return 0;}X + z r();int main + (z X,char**Y){ + clock_t q=0;(X + ==2)&&(f=atof(Y[1])),((i + =XOpenDisplay(0) )==0)&&(exit(1 + ),1),j=I(Defa, ultScreen)(i), + g=s(I(Display, + Width)(i,j)-1) + ,h=I(DisplayH, + eight)(i,j)-1; + for(;;((I(clo, + ck)()-q)*100>( + CLOCKS_PER_SEC + ))&&(r(),q=clock()));} + #include __FILE__ +#endif + diff --git a/_src/2001/schweikh.c b/_src/2001/schweikh.c new file mode 100644 index 0000000..b24af75 --- /dev/null +++ b/_src/2001/schweikh.c @@ -0,0 +1 @@ +main(int c,char**v){return!m(v[1],v[2]);}m(char*s,char*t){return*t-42?*s?63==*t|*s==*t&&m(s+1,t+1):!*t:m(s,t+1)||*s&&m(s+1,t);} diff --git a/_src/2001/westley.c b/_src/2001/westley.c new file mode 100644 index 0000000..36ebdc2 --- /dev/null +++ b/_src/2001/westley.c @@ -0,0 +1,37 @@ +main(i)?? + /* { /KC 0000 K } */ +S(c,r,i)char*c; ?? + + char* B,*r; X(c,k)?? +J(i,c,j)char*c; ?? + U(c,i)char*c; ?? + +A(i ,c,j ,k) char *c; ??< for(j= -1; ++j +R(c,r) char *c; ??< printf( "/%-80s|??/n" ,c); for (; r< 13; r++)S (c,r,0); ??> + t(a,b)?? + +M(i,c)char c??(81??)??(81??);?? + char*d= "yyzzyzz zz z0y000 zz 00yzz00y00yzz Brian Westley zyy00yy0yy 0" ; ; ; +#define t(a,b) t(b,a) + +char* K;Y (c ,r) ??< int i=V ( tolower (c) ,K); return(i <0)?1 :Z(c ,r, i); ??> +char*m= "7831734578 9547693564569528334164263z284106579 52626423135477"; ; ; ; +P(c)char*c; ?? + +char* d,*m,*B; Z(c,i,k)?? +char*K= "gh$j|lm'pq&rvz#);@_winky,.%/+*!=3-284106579 (:obfuscated??/?" ; ; + L(c,i,j)char c??(81??)??(81??);?? + char*r= "008y8yy8yyyyz8z8z88888z0yyz888 8888 88y00zz00z0088"; +D(c,i,j) char c??(81??)??(81??);?? + + E(r,s)char*r,*s; ??< if(t( 0,1)&& F(r,s)<0)G(r,s); ??> +H()?? return rand()-rand(); ??> +F(r,s)char*r,*s; ?? + + T(c,r) ??< return Y(c, r)?'??(' :' '; ??> +G(r,s)char*r,*s; ?? + W(r,a,b,c)?? + +Q(t,i)??< printf(t?" ":"|"); for(; i<80; i++) printf("_"); puts(t?"_":"|"); ??> + char*B=" yz0123456789"; +V(c,k,i) char*k; ?? diff --git a/_src/2001/williams.c b/_src/2001/williams.c new file mode 100644 index 0000000..f4f3349 --- /dev/null +++ b/_src/2001/williams.c @@ -0,0 +1,73 @@ +#include +#include +typedef long O; typedef struct { O b,f,u,s,c,a,t,e,d; } C; +Display *d; Window w; GC g; XEvent e; +char Q[] = "Level %d Score %d", m[222]; +#define N(r) (random()%(r)) +#define U I[n++]=L[n]=l; n%=222 +#define K c=-l.u; l=I[i]; l.t=0; c+=l.u +#define E l.e--&&!--L[l.e].d&&(L[l.e].t=3) +#define M(a,e,i,o) a[0]=e,(a[1]=i)&&XFillPolygon(d,w,g,(void*)a,o,1,1) +#define F return +#define R while( +#define Y if(l.t + + + O p ,B, + D,A=6,Z ,S=0,v= + 0,n=0,W=400 ,H=300,a[7] + ={ 33,99, 165, 231,297,363} ; + XGCValues G={ 6,0 ,~0L,0,1} ; short + T[]={ 0,300,-20,0,4 ,-20,4,10,4,-5,4,5, + 4,-20,4,20,4,-5,4,5,4, -10,4,20},b[]={ 0,0,4, + 0,-4,4,-4,-4,4,-4,4,4} ; C L[222],I[222];dC(O x){ + M(T,a[x],H,12); } Ne(C l,O s) { l.f=l.a=1; l.b=l.u=s; + l.t=16; l.e=0; U; } nL(O t,O a,O b,O x,O y,O s,O p){ C l; + l.d=0; l.f=s; l.t=t; y-=l.c=b; l.e=t==2?x:p; x-=l.s=a;s=(x|1) + %2*x; t=(y|1)%2*y; l.u=(a=s>t?s: t)>>9;l.a=(x<<9)/a;l.b=(y<<9)/a; + U; } di(C I){ O p,q,r,s,i=222;C l; B=D=0; R i--){ l=L[i]; Y>7){ p=I.s + -l.s>>9; q=I.c-l.c>>9; r=l.t==8?l.b: l.a; s=p*p+q*q; if(sa[i]+d)); F i; } dL(){ O c,r=0, i=222,h; C l; R i--){ l=L[i]; + Y){ r++;c=l.f; Y==3){c=l.u; l.t=0; E; }R c--){-- l.u;h=l.c>>9; Y>7){XDrawArc(d,w,g, +(l.s>>9)-++l.a,h-l.a,l.a*2,l.a*2,0 ,90<<8); if(!l.u){ I[i].t-=8; l=I[i]; } } else Y==2)M +(b,l.s>>9,h,6); else XDrawPoint(d ,w,g,(l.s+=l.a)>>9, h=(l.c+=l.b)>>9); Y==4&&!l.u){ Ne +(l,20); K; } Y&&l.t<3&&(di(l)||h> H)){ if(h>H&&(c=hi( l.s>>9,25))>=0){ dC(c); a[c]=a[-- +A]; }Ne(l,30); Y==1){ E;K; } else c=l.t=0;} Y==1&&h>9,l.c>>9,6); } + } L[i]=l; } } F r; } J(){ + R A) { XFlush(d); v&&sleep( + 3); Z=++v*10; p=50-v; v%2&&hi + ((a[A]=N(W-50)+25),50)<0 &&A++; + XClearWindow (d,w); for(B=0; B +#include +typedef long O; typedef struct { O b,f,u,s,c,a,t,e,d; } C; +Display *d; Window w; GC g; XEvent e; +char Q[] = "Level %d Score %d", m[222]; +#define N(r) (random()%(r)) +#define U I[n++]=L[n]=l; n%=222 +#define K c=-l.u; l=I[i]; l.t=0; c+=l.u +#define E l.e--&&!--L[l.e].d&&(L[l.e].t=3) +#define M(a,e,i,o) a[0]=e,(a[1]=i)&&XFillPolygon(d,w,g,(void*)a,o,1,1) +#define F return +#define R while( +#define Y if(l.t + + + O p ,B, + D,A=6,Z ,S=0,v= + 0,n=0,W=400 ,H=300,a[7] + ={ 33,99, 165, 231,297,363} ; + XGCValues G={ 6,0 ,~0L,0,1} ; short + T[]={ 0,300,-20,0,4 ,-20,4,10,4,-5,4,5, + 4,-20,4,20,4,-5,4,5,4, -10,4,20},b[]={ 0,0,4, + 0,-4,4,-4,-4,4,-4,4,4} ; C L[222],I[222];dC(O x){ + M(T,a[x],H,12); } Ne(C l,O s) { l.f=l.a=1; l.b=l.u=s; + l.t=16; l.e=0; U; } nL(O t,O a,O b,O x,O y,O s,O p){ C l; + l.d=0; l.f=s; l.t=t; y-=l.c=b; l.e=t==2?x:p; x-=l.s=a;s=(x|1) + %2*x; t=(y|1)%2*y; l.u=(a=s>t?s: t)>>9;l.a=(x<<9)/a;l.b=(y<<9)/a; + U; } di(C I){ O p,q,r,s,i=222;C l; B=D=0; R i--){ l=L[i]; Y>7){ p=I.s + -l.s>>9; q=I.c-l.c>>9; r=l.t==8?l.b: l.a; s=p*p+q*q; if(sa[i]+d)); F i; } dL(){ O c,r=0, i=222,h; C l; R i--){ l=L[i]; + Y){ r++;c=l.f; Y==3){c=l.u; l.t=0; E; }R c--){-- l.u;h=l.c>>9; Y>7){XDrawArc(d,w,g, +(l.s>>9)-++l.a,h-l.a,l.a*2,l.a*2,0 ,90<<8); if(!l.u){ I[i].t-=8; l=I[i]; } } else Y==2)M +(b,l.s>>9,h,6); else XDrawPoint(d ,w,g,(l.s+=l.a)>>9, h=(l.c+=l.b)>>9); Y==4&&!l.u){ Ne +(l,20); K; } Y&&l.t<3&&(di(l)||h> H)){ if(h>H&&(c=hi( l.s>>9,25))>=0){ dC(c); a[c]=a[-- +A]; }Ne(l,30); Y==1){ E;K; } else c=l.t=0;} Y==1&&h>9,l.c>>9,6); } + } L[i]=l; } } F r; } J(){ + R A) { XFlush(d); v&&sleep( + 3); Z=++v*10; p=50-v; v%2&&hi + ((a[A]=N(W-50)+25),50)<0 &&A++; + XClearWindow (d,w); for(B=0; B ++#include ++#include + #define k *(int*) + #define a if( + #define c ad() +@@ -6,7 +8,7 @@ + #define p while( + #define x *(char*) + #define b == +-#define V =calloc(1,99999) ++#define V =mmap(NULL, 99999/16*16+16, PROT_EXEC | PROT_WRITE | PROT_READ, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0) + #define f () + #define J return + #define l ae( diff --git a/patches/2001-ctk.patch b/patches/2001-ctk.patch new file mode 100644 index 0000000..171192e --- /dev/null +++ b/patches/2001-ctk.patch @@ -0,0 +1,11 @@ +--- ctk.c ++++ ctk.c +@@ -10,7 +10,7 @@ + "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b";char r[]={92,124,47},l[]={2,3,1 + ,0};char*T[]={" |"," |","%\\|/%"," %%%",""};char d=1,p=40,o=40,k=0,*a,y,z,g= + -1,G,X,**P=&T[4],f=0;unsigned int s=0;void u(int i){int n;printf( +-"\233;%uH\233L%c\233;%uH%c\233;%uH%s\23322;%uH@\23323;%uH \n",*x-*w,r[d],*x+*w ++"\x1b[H\x1b[L\x1b[;%uH%c\x1b[;%uH%c\x1b[;%uH%s\x1b[22;%uH@\x1b[23;%uH \n",*x-*w,r[d],*x+*w + ,r[d],X,*P,p+=k,o);if(abs(p-x[21])>=w[21])exit(0);if(g!=G){struct itimerval t= + {0,0,0,0};g+=((g> + 3)+1);setitimer(0,&t,0);f&&printf("\e[10;%u]",g+24);}f&&putchar(7);s+=(9-w[21] diff --git a/patches/2001-williams.patch b/patches/2001-williams.patch new file mode 100644 index 0000000..99cbd1c --- /dev/null +++ b/patches/2001-williams.patch @@ -0,0 +1,10 @@ +--- williams.c ++++ williams.c +@@ -64,7 +64,6 @@ + w=RootWindow(d,0); + R i--) XMapWindow(d,w=XCreateSimpleWindow(d,w,0,0,W,H,0,0,0)); + XSelectInput(d,w,4|1<<15); +-XMaskEvent(d,1<<15,&e); + g=XCreateGC(d,w,829,&G); + srandom(time(0)); + J(); diff --git a/style.scss b/style.scss index af5f38a..8114b16 100644 --- a/style.scss +++ b/style.scss @@ -89,6 +89,10 @@ figcaption { text-align: center; } +figure.audio { + text-align: center; +} + cite { font-size: 0.8rem; }