From 56291d12268821dd7e4f5259fe916e34e76524f1 Mon Sep 17 00:00:00 2001 From: Yusuke Endoh Date: Sat, 30 Jan 2021 21:59:15 +0900 Subject: [PATCH] Publish spoilers for IOCCC 1990 --- 1990/baruch.md | 68 ++++++++++++++++ 1990/cmills.md | 51 ++++++++++++ 1990/dds.md | 62 +++++++++++++++ 1990/dg.md | 37 +++++++++ 1990/index.md | 17 ++++ 1990/jaw.md | 104 ++++++++++++++++++++++++ 1990/pjr.md | 54 +++++++++++++ 1990/scjones.md | 54 +++++++++++++ 1990/stig.md | 40 ++++++++++ 1990/tbr.md | 36 +++++++++ 1990/theorem.md | 123 ++++++++++++++++++++++++++++ 1990/westley.md | 63 +++++++++++++++ _includes/1990-baruch.c.inc | 6 ++ _includes/1990-cmills.c.inc | 30 +++++++ _includes/1990-cmills.patch.inc | 11 +++ _includes/1990-dds.c.inc | 24 ++++++ _includes/1990-dds.patch.inc | 14 ++++ _includes/1990-dg.c.inc | 69 ++++++++++++++++ _includes/1990-dg.patch.inc | 132 +++++++++++++++++++++++++++++++ _includes/1990-jaw.c.inc | 22 ++++++ _includes/1990-pjr.c.inc | 14 ++++ _includes/1990-scjones.c.inc | 46 +++++++++++ _includes/1990-stig.c.inc | 1 + _includes/1990-tbr.c.inc | 23 ++++++ _includes/1990-tbr.patch.inc | 18 +++++ _includes/1990-theorem.c.inc | 93 ++++++++++++++++++++++ _includes/1990-theorem.patch.inc | 14 ++++ _includes/1990-westley.c.inc | 107 +++++++++++++++++++++++++ _includes/1990-westley.patch.inc | 27 +++++++ _src/1990/baruch.c | 6 ++ _src/1990/cmills.c | 30 +++++++ _src/1990/cmills.new.c | 30 +++++++ _src/1990/dds.c | 24 ++++++ _src/1990/dds.new.c | 24 ++++++ _src/1990/dg.c | 69 ++++++++++++++++ _src/1990/dg.new.c | 69 ++++++++++++++++ _src/1990/jaw.c | 22 ++++++ _src/1990/pjr.c | 14 ++++ _src/1990/scjones.c | 46 +++++++++++ _src/1990/stig.c | 1 + _src/1990/tbr.c | 23 ++++++ _src/1990/tbr.new.c | 23 ++++++ _src/1990/theorem.c | 93 ++++++++++++++++++++++ _src/1990/theorem.new.c | 95 ++++++++++++++++++++++ _src/1990/westley.c | 107 +++++++++++++++++++++++++ _src/1990/westley.new.c | 107 +++++++++++++++++++++++++ index.md | 1 + patches/1990-cmills.patch | 11 +++ patches/1990-dds.patch | 14 ++++ patches/1990-dg.patch | 132 +++++++++++++++++++++++++++++++ patches/1990-tbr.patch | 18 +++++ patches/1990-theorem.patch | 14 ++++ patches/1990-westley.patch | 27 +++++++ 53 files changed, 2360 insertions(+) create mode 100644 1990/baruch.md create mode 100644 1990/cmills.md create mode 100644 1990/dds.md create mode 100644 1990/dg.md create mode 100644 1990/index.md create mode 100644 1990/jaw.md create mode 100644 1990/pjr.md create mode 100644 1990/scjones.md create mode 100644 1990/stig.md create mode 100644 1990/tbr.md create mode 100644 1990/theorem.md create mode 100644 1990/westley.md create mode 100644 _includes/1990-baruch.c.inc create mode 100644 _includes/1990-cmills.c.inc create mode 100644 _includes/1990-cmills.patch.inc create mode 100644 _includes/1990-dds.c.inc create mode 100644 _includes/1990-dds.patch.inc create mode 100644 _includes/1990-dg.c.inc create mode 100644 _includes/1990-dg.patch.inc create mode 100644 _includes/1990-jaw.c.inc create mode 100644 _includes/1990-pjr.c.inc create mode 100644 _includes/1990-scjones.c.inc create mode 100644 _includes/1990-stig.c.inc create mode 100644 _includes/1990-tbr.c.inc create mode 100644 _includes/1990-tbr.patch.inc create mode 100644 _includes/1990-theorem.c.inc create mode 100644 _includes/1990-theorem.patch.inc create mode 100644 _includes/1990-westley.c.inc create mode 100644 _includes/1990-westley.patch.inc create mode 100644 _src/1990/baruch.c create mode 100644 _src/1990/cmills.c create mode 100644 _src/1990/cmills.new.c create mode 100644 _src/1990/dds.c create mode 100644 _src/1990/dds.new.c create mode 100644 _src/1990/dg.c create mode 100644 _src/1990/dg.new.c create mode 100644 _src/1990/jaw.c create mode 100644 _src/1990/pjr.c create mode 100644 _src/1990/scjones.c create mode 100644 _src/1990/stig.c create mode 100644 _src/1990/tbr.c create mode 100644 _src/1990/tbr.new.c create mode 100644 _src/1990/theorem.c create mode 100644 _src/1990/theorem.new.c create mode 100644 _src/1990/westley.c create mode 100644 _src/1990/westley.new.c create mode 100644 patches/1990-cmills.patch create mode 100644 patches/1990-dds.patch create mode 100644 patches/1990-dg.patch create mode 100644 patches/1990-tbr.patch create mode 100644 patches/1990-theorem.patch create mode 100644 patches/1990-westley.patch diff --git a/1990/baruch.md b/1990/baruch.md new file mode 100644 index 0000000..0a3d2eb --- /dev/null +++ b/1990/baruch.md @@ -0,0 +1,68 @@ +--- +id: 1990/baruch +year: 1990 +order: 1 +authors: + - "Doron_Osovlanski" + - "Baruch_Nissenbaum" +orig_url: "https://www.ioccc.org/1990/baruch.c" +hint_url: "https://github.com/ioccc-src/winner/blob/main/1990/baruch.hint" +title: "IOCCC 1990: Best Small Program" +award_ja: "最高の小さいプログラム" +linewrap: true +--- + +## 動作 + +Nクイーンのソルバ。 + +``` +$ gcc -o baruch baruch.c + +$ echo 4 | ./baruch + + + Q # +# #Q +Q# # +# Q + + #Q# +Q # + # Q +#Q# + +$ echo 7 | ./baruch + + +Q# # # +# Q # # + # #Q# +# # # Q + Q # # +# #Q# # + # # Q + +Q# # # +# #Q# # + # # #Q +# Q # # + # # Q +#Q# # # + # #Q# + +Q# # # +# # Q # + Q # # +# # #Q# + #Q# # +# # # Q + # Q # +... +``` + +## 解説 + +200バイトちょっとの短いコードでNクイーンの解を列挙する。 +`main`の中に`for`文がひとつあるだけのコードになっていて、このループがすべての処理でうまく使いこなされているのだと思う。 +詳細は未解析。 diff --git a/1990/cmills.md b/1990/cmills.md new file mode 100644 index 0000000..2b5392c --- /dev/null +++ b/1990/cmills.md @@ -0,0 +1,51 @@ +--- +id: 1990/cmills +year: 1990 +order: 2 +patch: true +authors: "Christopher_Mills" +orig_url: "https://www.ioccc.org/1990/cmills.c" +hint_url: "https://github.com/ioccc-src/winner/blob/main/1990/cmills.hint" +title: "IOCCC 1990: Best Game" +award_ja: "最高のゲーム" +linewrap: true +--- + +## 動作 + +ブラックジャック。ダブルダウン、スプリット、インシュランスなど、いろいろ本格的。 + +``` +$ gcc -DM=500 -DN=52 -DX="srand((int)time(0L))" -DV=void -o cmills cmills.c + +$ ./cmills +Shuffle... +Total $1000. Wager?500 +Dealer: Q? Player: 37 +Double?y +Dealer: Q8 Player: 37K +Total $2000. Wager?500 +Dealer: Q? Player: 56 +Double?n +Hit?y +Dealer: Q? Player: 56J +Hit?n +Dealer: Q7 Player: 56J +Total $2500. Wager?500 +Dealer: A? Player: 6A +Insurance?y +Double?n +Hit?y +Dealer: A? Player: 6AK +Hit?y +Dealer: A3Q6 Player: 6AK8 +Total $1750. Wager? +... +``` + +## 解説 + +C89が制定された新時代らしく、ANSI-compliantがうたわれている。 +難読化としては、短い識別子を使い、インデントを破壊した程度ではないかと思うが、詳しくは見ていない。 + +文字列リテラルを破壊しているので修正が必要。 diff --git a/1990/dds.md b/1990/dds.md new file mode 100644 index 0000000..b3b0906 --- /dev/null +++ b/1990/dds.md @@ -0,0 +1,62 @@ +--- +id: 1990/dds +year: 1990 +order: 3 +patch: true +authors: "Diomidis_Spinellis" +orig_url: "https://www.ioccc.org/1990/dds.c" +hint_url: "https://github.com/ioccc-src/winner/blob/main/1990/dds.hint" +title: "IOCCC 1990: Best Language Tool" +award_ja: "最高の言語ツール" +--- + +## 動作 + +[BASIC](https://ja.wikipedia.org/wiki/BASIC)インタプリタ。付属するLANDER.BASを起動する例。 + +``` +$ gcc -o dds dds.c + +$ ./dds +Ok +OLD LANDER.BAS +Ok +RUN +You aboard the Lunar Lander about to leave the spacecraft. +Ready for detachment +-- COUNTDOWN -- +10 +9 +8 +7 +6 +5 +4 +3 +2 +1 +0 +You have left the spacecraft. +Try to land with velocity less than 5 m/sec. + Meter readings + -------------- +Fuel (gal): +500 +Velocity (m/sec): +70 +Height (m): +1000 +How much fuel will you use? +``` + +## 解説 + +言語処理系の作品。 +これまでの同系統の作品と比べると、多くのコマンドや演算子がサポートされていて、丁寧に作られている。 +難読化としては、ブロック上にしただけで特筆することはないと思う。 + +サンプルコードである[LANDER.BAS](https://github.com/ioccc-src/winner/blob/main/1990/LANDER.BAS)は[Lunar Lander(月面着陸ゲーム)](https://en.wikipedia.org/wiki/Lunar_Lander_%28video_game_genre%29)。 +ターン毎に現在の燃料の残量、対地速度、高さが表示され、燃料の使用量を調整して地上に軟着陸することを目指す、レトロなテキストベースゲーム(1969年からあるらしい)。 +この記事はネタバレ解説なので単純な攻略法を書くと、燃料をまったく使わずに落ちていき、墜落の直前で全量を噴射するとクリアできる。 + +`&&`の後に`void`を返す関数(`free()`)を書けなくなっていたので、そこだけ修正が必要。 diff --git a/1990/dg.md b/1990/dg.md new file mode 100644 index 0000000..76f9395 --- /dev/null +++ b/1990/dg.md @@ -0,0 +1,37 @@ +--- +id: 1990/dg +year: 1990 +order: 4 +patch: true +authors: "David_Goodenough" +orig_url: "https://www.ioccc.org/1990/dg.c" +hint_url: "https://github.com/ioccc-src/winner/blob/main/1990/dg.hint" +title: "IOCCC 1990: Best Abuse of the C Preprocessor" +award_ja: "Cプリプロセッサの最高の悪用" +--- + +## 動作 + +ROT13エンコーダ。 + +``` +$ gcc -o dg dg.c + +$ echo Hello | ./dg +Uryyb +``` + +## 解説 + +トークンを1つだけ追加するマクロを大量に定義し、それらを組み合わせるだけでプログラムを構成している。 +単純だがおもしろい。 + +``` +#define aqu(x) x' +#define bqu(x) 'x + +aqu(bpu(A)) +``` + +によって`'A'`を作り出す、というのは動かないので、これは`'A'`に置き換えた(このことはdg.hintにも書かれている)。 +また、`#define d define`のトリックも動かないので書き下した。 diff --git a/1990/index.md b/1990/index.md new file mode 100644 index 0000000..704d1ac --- /dev/null +++ b/1990/index.md @@ -0,0 +1,17 @@ +--- +year: 1990 +title: "IOCCC 1990の解説" +layout: contest +--- +## 全体の印象 + +プログラムの挙動のおもしろさを目指すものと、難読化の創意工夫を目指すもので二極化してきたように見える。 + +前者の系統の作品は難読化自体は目新しくなく、短い変数名でインデントをつぶした程度のものが多いが、[[[1990/tbr]]]({{ site.baseurl }}{% link 1990/tbr.md %})はコード形状で遊び始めていて、今後のIOCCCの方向性を示している。 +後者の「難読化の創意工夫」の系統の作品は、まだ1つのアイデアで押し通す一点突破ものが多い。 + +個人的な好みでは、[[[1990/westley]]]({{ site.baseurl }}{% link 1990/westley.md %})の超絶技巧と、[[[1990/theorem]]]({{ site.baseurl }}{% link 1990/theorem.md %})のコード遊びが飛び抜けていると思う。 + +この回はC89(ANSI C)規格化後初のIOCCCであり、ANSI Cに捧ぐコンテストとなっている。 +が、直接的にC89にからめた作品は[[[1990/scjones]]]({{ site.baseurl }}{% link 1990/scjones.md %})だけか。 +付属のMakefileでコンパイルする場合、`make`時に`USE=ansi`か`USE=common`をつけないといけなくなっている。 diff --git a/1990/jaw.md b/1990/jaw.md new file mode 100644 index 0000000..c8bd18c --- /dev/null +++ b/1990/jaw.md @@ -0,0 +1,104 @@ +--- +id: 1990/jaw +year: 1990 +order: 5 +authors: + - "James_A._Woods" + - "Karl_F._Fox" + - "Paul_Eggert" +orig_url: "https://www.ioccc.org/1990/jaw.c" +hint_url: "https://github.com/ioccc-src/winner/blob/main/1990/jaw.hint" +title: "IOCCC 1990: Best Entropy-reducer" +award_ja: "最高のエントロピー削減器" +--- + +## 動作 + +一言で言えば、テキスト化された自己解凍アーカイブのためのCコード。 +ここでは最終的な動作だけを示し、詳しい説明は解説に回す。 + +添付されている[shark.sh](https://github.com/ioccc-src/winner/blob/main/1990/shark.sh)(jaw.cが埋め込まれている)を使うと自己解凍アーカイブができる。 +実行には[compressコマンド](https://ja.wikipedia.org/wiki/UNIX_Compress)とbtoaコマンド(後述)が必要。 + +``` +$ PATH=.:$PATH sh shark.sh jaw.* > archive +``` + +これを別ディレクトリで解凍する。 + +``` +$ mkdir test + +$ cd test + +$ sh ../archive +... +``` + +元と同じファイルが生成されていることが確認できる。 + +``` +$ ls +jaw.c jaw.hint + +$ diff -s jaw.c ../jaw.c +Files jaw.c and ../jaw.c are identical + +$ diff -s jaw.hint ../jaw.hint +Files jaw.hint and ../jaw.hint are identical +``` + +## 解説 + +当時の通信環境では、通信速度が遅いのでデータ圧縮することが必須だった。 +一方で、プロトコルの都合により、テキスト形式にすることも必要だった。 +そのため、データを送信する人は圧縮したうえでバイナリ→テキスト変換を行い、受信側はその逆の手順を行っていた(メールの添付ファイルは現代でもBase64によるバイナリ・テキスト変換を行っているが、メールのクライアントが勝手に処理するので意識することは少ない)。 +ここで問題になるのは、受信側が適切なツール群を持っていない場合、デコードができないということだった。 + +この作品はこの問題を解決するために作られた。 +このプログラムは、atobの機能と、zcatの機能を備える。 +atobは[btoa](https://en.wikipedia.org/wiki/Ascii85#btoa_version)というバイナリ→テキスト変換の結果を逆変換する機能、zcatはcompressで圧縮されたデータを解凍する機能。 +これらを使うことで、テキスト→バイナリ変換かつ解凍を行える。 + +このプログラムのバイナリは`atob`という名前で起動されたとき(`argv[0]`が`'a'`のとき)、atobモードで動く。 + +``` +$ echo Hello | ./btoa +xbtoa Begin +87cURD[HIE +xbtoa End N 6 6 E 48 S 206 R 5520 + +$ echo Hello | ./btoa | ruby -e 'exec(["./atob", "atob"])' +Hello +``` + +バイナリが`a`で始まらない場合、このプログラムはzcatモードで動く。 + +``` +$ echo Hello | compress | ./zcat +Hello +``` + +shark.shで作られた自己解凍アーカイブはjaw.cを埋め込んでいる(1100バイト程度とのこと)ので、受信側はあらかじめatobやzcatを用意しておく必要はない。 +アーカイブを実行するとこのCコードをコンパイルしてatobとzcatを作り、それらを使ってデータを展開できる。 +ただし受信側にCコンパイラやtarコマンドは必要。 + +このツールはひょっとしたら半分くらいまじめに実利用を狙っていたのかもしれない。 +実用性が難読化(ショートコーディング)に依存しているなど、開発の経緯がjaw.hintに書かれている。 +不幸にも現代ではcompressもbtoaも陳腐化しており、起動するのも苦労した。 +btoaはUbuntuにパッケージがなかったので、いろいろ調べながらRubyで雑に書いたbtoaを置いておく。 + +``` +#!/usr/bin/env ruby +puts "xbtoa Begin" +data = $<.read +n, e, s, r = data.bytesize, 0, 0, 0 +(-n % 4).times { data << 0 } +data.bytes do |b| + e, s, r = e ^ b, (s + b + 1) & 0xffffffff, (r * 2 + r[31] + b) & 0xffffffff +end +data.unpack("N*").flat_map do |v| + v == 0 ? [?z.ord] : (0..4).map {|i| v / 85**(4 - i) % 85 + 33 } +end.pack("C*").scan(/.{1,78}/) { puts $& } +puts "xbtoa End N %d %x E %x S %x R %x" % [n, n, e, s, r] +``` diff --git a/1990/pjr.md b/1990/pjr.md new file mode 100644 index 0000000..db8d4b5 --- /dev/null +++ b/1990/pjr.md @@ -0,0 +1,54 @@ +--- +id: 1990/pjr +year: 1990 +order: 6 +authors: "Peter_J_Ruczynski" +orig_url: "https://www.ioccc.org/1990/pjr.c" +hint_url: "https://github.com/ioccc-src/winner/blob/main/1990/pjr.hint" +title: "IOCCC 1990: Most Unusual Data Structure" +award_ja: "もっとも異常なデータ構造" +--- + +## 動作 + +固定メッセージを出力するだけ。 + +``` +$ gcc -o pjr pjr.c + +$ ./pjr +the quick brown fox jumped over the lazy dog +``` + +## 解説 + +`X=g().s().v().S().j().f().r().x().p().`...というメソッドチェーンのようなコード。 +1関数が1文字を出力する。 +`.a()`は`z`、`.b()`は`y`、`.c()`は`x`というように、abc順を反転した文字を出すとのこと。 + +実現するためには構造体を使えばよい。大まかには次のような構造になっている。 + +``` +// 関数プロトタイプ宣言 +struct F a(); +struct F b(); +struct F c(); +... + +// 肝となる構造体 +struct F { + struct F (*a)(), (*b)(), (*c)(), ...; +} X = { a, b, c, ... }; + +// 関数定義(かならずXを返す) +struct F a() { printf("a"); return X; } +struct F b() { printf("b"); return X; } +struct F c() { printf("c"); return X; } +... + +main(){ + X = a().b().c()...; +} +``` + +一発ネタの難読化でシンプルにまとめられている。 diff --git a/1990/scjones.md b/1990/scjones.md new file mode 100644 index 0000000..235f873 --- /dev/null +++ b/1990/scjones.md @@ -0,0 +1,54 @@ +--- +id: 1990/scjones +year: 1990 +order: 7 +authors: "Larry_Jones" +orig_url: "https://www.ioccc.org/1990/scjones.c" +hint_url: "https://github.com/ioccc-src/winner/blob/main/1990/scjones.hint" +title: "IOCCC 1990: ANSI Committee's Worst Abuse of C" +award_ja: "ANSI委員会のCの最悪の悪用" +--- + +## 動作 + +自分自身のソースコードを出力する。いわゆる[Quine](https://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%AF%E3%82%A4%E3%83%B3_%28%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%29)。 + +``` +$ gcc -ansi -o scjones scjones.c + +$ ./scjones > scjones.out + +$ diff -s scjones.c scjones.out +Files scjones.c and scjones.out are identical +``` + +## 解説 + +C89(ANSI C)が規格化したあとの初のIOCCCなので、偏執的にこれに準拠している。 +必要とされるヘッダファイルをきちんと`#include`し、終了には`exit(EXIT_SUCCESS)`などを使う。 + +そして、悪名高い[trigraph](https://ja.wikipedia.org/wiki/%E3%83%88%E3%83%A9%E3%82%A4%E3%82%B0%E3%83%A9%E3%83%95)を使っている。 +trigraphとは、`#`の代用として`??=`と書いたり、`[`の代用として`??(`と書いたりできるというC言語の機能のこと。 + +なぜこのような機能があるかというと、`#`や`[`などは他の文字と比べて(わずかに)ポータビリティに問題のある文字だったため。 +[ASCII](https://ja.wikipedia.org/wiki/ASCII)ではすべて定義されていたが、それを国際化した[ISO/IEC 646](https://ja.wikipedia.org/wiki/ISO/IEC_646)では一部の文字が未定義となっていた。 +実際、ISO/IEC 646の日本語版である[JIS X 0201](https://ja.wikipedia.org/wiki/JIS_X_0201)では、バックスラッシュが円マークに置き換えられている。 +trigraphを使うと、ポータビリティの高い文字だけでC言語プログラムが書けるようになる。 + +ということで、この作品はtrigraphを使用しているのでポータブルであるとのこと。 +当時の多くのK&R準拠コンパイラでは逆にビルドできない原因になるので、皮肉の意味もあったのかもしれない。 +またこの作品は、さらなるポータビリティのために、一行を72文字に抑えている。 +これにより、パンチカードで行番号を打つ余裕もある。 + +IOCCC審査員はscjones.hintでtrigraphへの嫌悪感を隠しておらず、今後の審査ではtrigraphによる難読化はあまり考慮しないとしている。 +ASCIIは当時の時点でも既にデファクトスタンダードであり、trigraphは最初から議論のある機能だったことが伺える。 + +現代のgccはデフォルトでtrigraphを無効化している(`-ansi`オプションをつけると有効になる)。 +このプログラムを`-Wall`つきでコンパイルすると、皮肉にもtrigraphの使用が警告される。 +余談だが、C++17ではtrigraphは廃止されている。 + +プログラム自体は、普通のQuineだと思う。 +実は初のQuine作品の入賞だが、C89規格の話に埋もれていてあまり知られていない。 + +なお、この作者はANSI委員会でCを規格化したメンバの一人とのこと。 +IOCCCの審査は作者情報を見ないで行うので、賞名は作者の正体を知らずにつけたらしい。 diff --git a/1990/stig.md b/1990/stig.md new file mode 100644 index 0000000..2a548dc --- /dev/null +++ b/1990/stig.md @@ -0,0 +1,40 @@ +--- +id: 1990/stig +year: 1990 +order: 8 +authors: "Stig_Hemmer" +orig_url: "https://www.ioccc.org/1990/stig.c" +hint_url: "https://github.com/ioccc-src/winner/blob/main/1990/stig.hint" +title: "IOCCC 1990: Strangest Abuse of the Rules" +award_ja: "もっとも奇妙なルール悪用" +--- + +## 動作 + +コンパイラが入れ子のコメントをサポートしているかどうかを判定する、とのこと。 +次のようにコンパイル・実行する。 + +{: .wrap } +``` +$ alias c="cc -E stig.c -Dc='main(){printf(\"N%sested comments allowed.\\n"'",/*/*/0*/**/1?"":"o n"'");}'|grep -v '^#'>o.c;cc -o o o.c;./o" + +$ c +... +No nested comments allowed. +``` + +## 解説 + +ソースコードは`c`の1文字だけで、コンパイラオプション`-Dc=...`として意味を与える。 +これは[[[1987/biggar]]]({{ site.baseurl }}{% link 1987/biggar.md %})とまったく同じネタ。 +しかし、そこに埋め込むコードの方に創意工夫が認められたとのこと。 + +コメントの入れ子がサポートされているかどうかを判定するギミックは`/*/*/0*/**/1`のところ。 +コメントが入れ子にならないコンパイラではこれは`0 * 1`となり、コメントが入れ子になるコンパイラでは`1`になる。 +ただしstig.hintによると、これは作者自身の発明ではないとのこと。 + +作者自身の創意工夫は、この判定ギミックを埋め込んだコードをコンパイラオプション(`-Dc=...`)に埋め込み、それと主にccコマンドの呼び出しを行うcsh向けaliasをechoで出力させる、というところらしい。 +エスケープだらけになってわかりにくいことは確か。 + +現代では、コメントを入れ子で処理するコンパイラが見当たらなかったので、`Nested comments allowed.`の出力は確認できていない。 +また、残念ながらcshはマイナーになってしまい、現代の主流であるbashやzshでは比較的自然にaliasを定義できてしまう(添付されているksh向けの定義がほぼそのまま動く)ので、難読化のポイントも伝わりにくくなっている。 diff --git a/1990/tbr.md b/1990/tbr.md new file mode 100644 index 0000000..997d043 --- /dev/null +++ b/1990/tbr.md @@ -0,0 +1,36 @@ +--- +id: 1990/tbr +year: 1990 +order: 9 +patch: true +authors: + - "Byron_Rakitzis" + - "Sean_Dorward" +orig_url: "https://www.ioccc.org/1990/tbr.c" +hint_url: "https://github.com/ioccc-src/winner/blob/main/1990/tbr.hint" +title: "IOCCC 1990: Best Utility" +award_ja: "最高のユーティリティ" +--- + +## 動作 + +シェル。 + +``` +~/ioccc/1990$ gcc -o tbr tbr.c + +~/ioccc/1990$ ./tbr +$ echo Hello > tmp.txt +$ cat tmp.txt +Hello +``` + +## 解説 + +謎のレイアウト。波線や縦書き円周率などが目につくが、特に主題とは関係ないと思う。 + +tbr.hintではコード圧縮のテクニックがいろいろと語られている。550バイトでシェルは結構すごい気がする。詳細は未解読。 + +エラーメッセージは`?`のみだが、[edコマンド](https://ja.wikipedia.org/wiki/Ed_%28%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF%29)も同じなのでいいでしょう、とのこと。 + +現代では`exit(0)`の返り値を使っているところでエラーになるので、`(exit(0),0)`に置き換えた。 diff --git a/1990/theorem.md b/1990/theorem.md new file mode 100644 index 0000000..be49572 --- /dev/null +++ b/1990/theorem.md @@ -0,0 +1,123 @@ +--- +id: 1990/theorem +year: 1990 +order: 11 +patch: true +authors: "Adrian_Mariano" +orig_url: "https://www.ioccc.org/1990/theorem.c" +hint_url: "https://github.com/ioccc-src/winner/blob/main/1990/theorem.hint" +title: "IOCCC 1990: Best of Show" +award_ja: "最優秀賞" +--- + +## 動作 + +微分方程式の数値的ソルバ。 + +y'=yという微分方程式を、x=0からx=1にかけて0.1ステップで数値的に解く例。ただしx=0のときy=1とする。 + +``` +$ gcc -o theorem theorem.c + +$ ./theorem y 0 1 0.1 1 +0.100000 1.105171 +0.200000 1.221403 +0.300000 1.349859 +0.400000 1.491824 +0.500000 1.648721 +0.600000 1.822118 +0.700000 2.013752 +0.800000 2.225539 +0.900000 2.459601 +1.000000 2.718280 +``` + +解はy=e^xなので、x=1のときにy=e (= 2.7182818...)になっていることがわかる。 + +y'=1/xという微分方程式を、x=1からx=2.7にかけて0.1ステップで数値的に解く例。ただしx=1のときy=0とする。 + +``` +$ ./theorem 1/x 1 2.7 0.1 0 +1.100000 0.095310 +1.200000 0.182322 +1.300000 0.262364 +1.400000 0.336472 +1.500000 0.405465 +1.600000 0.470004 +1.700000 0.530628 +1.800000 0.587787 +1.900000 0.641854 +2.000000 0.693147 +2.100000 0.741938 +2.200000 0.788458 +2.300000 0.832909 +2.400000 0.875469 +2.500000 0.916291 +2.600000 0.955512 +2.700000 0.993252 +2.799999 1.029620 +``` + +解はy=log(x)なので、x=2.7のときにおおよそlog(e)=1になっていることがわかる。 + +--- + +さて、数式部分に`-r`と書いた場合、このプログラムは行の反転をするプログラムになる。 + +``` +$ echo -e "1\n2\n3" | ./theorem -r 0 0 0 0 +3 +2 +1 +``` + +もとのソースコードを反転させると、ソートをするプログラムになる。 + +``` +$ ./theorem -r 0 0 0 0 < theorem.c > sorter.c + +$ gcc -o sorter sorter.c + +$ echo -e '2\n3\n1" | ./sorter 0 0 0 0 +1 +2 +3 +``` + +そして、もとのソースコードをソートすると、フィボナッチ数列を計算するプログラムになる。 + +``` +$ ./sorther 0 0 0 0 < theorem.c > fibonacci.c + +$ gcc -o fibonacci fibonacci.c + +$ ./fibonacci 1 1 +2 +3 +5 +8 +13 +21 +34 +55 +89 +144 +233 +377 +610 +987 +1597 +2584 +4181 +6765 +10946 +``` + +## 解説 + +逆転してもソートしても動くプログラム。いろいろ盛り込みまくっていてすごい。 +USENIXでの入賞作品発表では、スタンディングオベーションが発生したとのこと。 + +theorem.hintによると、数値計算アルゴリズムは[ルンゲ・クッタ法](https://ja.wikipedia.org/wiki/%E3%83%AB%E3%83%B3%E3%82%B2%EF%BC%9D%E3%82%AF%E3%83%83%E3%82%BF%E6%B3%95)とのこと。 + +現代では`#include`をしないと`atof`関数が正しく動かないので、そこだけ修正した。 diff --git a/1990/westley.md b/1990/westley.md new file mode 100644 index 0000000..5ace283 --- /dev/null +++ b/1990/westley.md @@ -0,0 +1,63 @@ +--- +id: 1990/westley +year: 1990 +order: 10 +patch: true +authors: "Brian_Westley" +orig_url: "https://www.ioccc.org/1990/westley.c" +hint_url: "https://github.com/ioccc-src/winner/blob/main/1990/westley.hint" +title: "IOCCC 1990: Best Layout" +award_ja: "最高のレイアウト" +--- + +## 動作 + +花占いのプログラム。引数の数字の数だけ「`argv[0]` loves me(好き)」「`argv[0]` loves me, not(嫌い)」を出していく。 + +``` +$ gcc -o westley westley.c + +$ ./westley 3 +./westley +loves me +./westley +loves me, not +./westley +loves me + +$ ./westley 4 +./westley +loves me +./westley +loves me, not +./westley +loves me +./westley +loves me, not +``` + +## 解説 + +プログラムの見た目がふつうの文章のようになっている。 +`char*lie`(チャーリー)と`(char)lotte`(シャーロット)の掛け合いの脚本っぽい。 + +とぎれとぎれの通信のように読めとのこと。次は序盤部分を読みやすくしてみたもの。 + +``` +char*lie; | charlie, + double time, me= !0XFACE, | doubletime me, OXFACE! + not; int rested, get, out; | not interested, get out + main(ly, die) char ly, **die ;{ | mainly die, charly, *die* + signed char lotte, | signed charlotte +``` + +正直英語力が足りなくてわからないところがかなりあるけど、`love 1s *!(not= atoi(let`(love is not a toilet)は良い。 +この制約の上で書かれていながら、意味のある動作をするのだから、ちょっと信じられない。圧巻の一言。 + +westleyの4作目。westley.hintにある作者コメントも知性に溢れている。 + +* Cの構文が英語風でないという批判に対する反例として書いた。 +* Lintツールが文句ばかり言う。お気に入りの警告は "warning: eroticism unused in function main". +* `(char)lotte`と`(char*)lie`はどうみても非互換な型。 + +作者コメントにもあるとおり、ANSIコンパイラは`1s`を`short`型の整数とはしてくれないので、`1`に置き換える必要があった。 diff --git a/_includes/1990-baruch.c.inc b/_includes/1990-baruch.c.inc new file mode 100644 index 0000000..fb2fdf1 --- /dev/null +++ b/_includes/1990-baruch.c.inc @@ -0,0 +1,6 @@ +v,i,j,k,l,s,a[99]; +main() +{ + for(scanf("%d",&s);*a-s;v=a[j*=v]-a[i],k=i<s,j+=(v=j<s&&(!k&&!!printf(2+"\n\n%c"-(!l<<!j)," #Q"[l^v?(l^j)&1:2])&&++l||a[i]<s&&v&&v-i+j&&v+i-j))&&!(l%=s),v||(i==j?a[i+=k]=0:++a[i])>=s*k&&++a[--i]) + ; +} \ No newline at end of file diff --git a/_includes/1990-cmills.c.inc b/_includes/1990-cmills.c.inc new file mode 100644 index 0000000..ff68cb3 --- /dev/null +++ b/_includes/1990-cmills.c.inc @@ -0,0 +1,30 @@ +#include<stdio.h> +#include<time.h> +#define S(q)B(*e=0),q,p); +#define W(w)if((w)<22)v= -v;else v-=10;else +#define F for(r=d;r<d+N; +#define H(v,g)v=h(v,*g++= *r++),*g=0; +#define B(n)b(l,n),(V)printf(l +V +exit();char*g,c[M],d[N],q[N],p[N],*e,*r=d+N,l[M],*t="??",*k,*m="DEATHISDSev2oinpohae3ttsluuln4a?uibfe 5l\0rtlfrb6 ?a?el:e7$!n\0?e t8%ccp\0.%s9deelc.s T.@?-t.\t<J /\0=a\nP=Q Sex \0l KW Sin a$\0ane-lay% ge#-slediefuk ar r$via-:o ?+}:r? n \0:) ee%lone 1-esy666!-~v\n.!^`'~@#\0\np~===:=q";b(o,n)char*o;{for(k=n+m;*o++=*k;k+=9);}int +y=M*2,v,x,s,f,j,o;u(s){B(s));if(!gets(l))exit(0);return(o= +*l)=='y'||o=='Y'||o!='n'&&o!='N'&&u(s);}h(v,m){for(k=c;*k!='J';)if(m==*k++)break;m=k-c;if(v<0)W(v=m-v) +if(m==1)W(v+=11) +v+=m;return +v;}main(w,z)char**z;{b(c,2)*X;for(--w&&(y=atoi(1[z]));y>1;){if(r-d>N*3/4){B(8));F++r)*r=c[(r-d)%13];F)w= +*(g=d+rand()%N),*g= +*r,*r++=w;r=d;}for(;;){B(3),y);if(!gets(l)||(w=atoi(l))<1)exit(0);if(w&1||w>M||w>y)B(1),y<M?y:M);else +break;}y-=w,s=f=j=x=v=0,g=q,e=p;H(x,g)H(x,g)H(v,e)H(v,e)*t= +*q;S(t)*q=='A'&&y>=w/2&&u(5)&&(y+=(3*(h(0,1[q])==10)-1)*w/2);if(x==-21)goto +_;if(v==-21){y+=w/2;goto +_;}while(x>-17&&x<17)H(x,g)while((v==20||*p==-1[e])&&y>=w&&u(6)){y-=w;++s;for(g=e++;2[g]= +*g,g!=p;)--g;*g++= +*e;*g=' ';i:v=h(h(0,*p),*e++= +*r++);S(t)if(*p=='A'&&-1[e]!= +*p)goto +_;}if(f=y>=w&&u(7))y-=w,H(v,e)while(!f&&v<22&&u(4)){H(v,e)if(v<22)S(t)}_:x<0&&(x= +-x);v<0&&(v= +-v);if(v<22)if(v==x)j+=w*++f;else +if(x>21||v>x)j+=w*2*++f;if(s--){*e++=' ';*e++= +*p;*e=0;for(e=p;*e=2[e];)e++;goto +i;}y+=j;S(q)};} \ No newline at end of file diff --git a/_includes/1990-cmills.patch.inc b/_includes/1990-cmills.patch.inc new file mode 100644 index 0000000..f804cf5 --- /dev/null +++ b/_includes/1990-cmills.patch.inc @@ -0,0 +1,11 @@ +--- cmills.c ++++ cmills.c +@@ -6,7 +6,7 @@ + #define H(v,g)v=h(v,*g++= *r++),*g=0; + #define B(n)b(l,n),(V)printf(l + V +-exit();char*g,c[M],d[N],q[N],p[N],*e,*r=d+N,l[M],*t="??",*k,*m="DEATHISDSev2oinpohae3ttsluuln4a?uibfe 5l\0rtlfrb6 ?a?el:e7$!n\0?e t8%ccp\0.%s9deelc.s T.@?-t.\t<J /\0=a\nP=Q Sex \0l KW Sin a$\0ane-lay% ge#-slediefuk ar r$via-:o ?+}:r? n \0:) ee%lone 1-esy666!-~v\n.!^`'~@#\0\np~===:=q";b(o,n)char*o;{for(k=n+m;*o++=*k;k+=9);}int ++exit();char*g,c[M],d[N],q[N],p[N],*e,*r=d+N,l[M],t[]="??",*k,*m="DEATHISDSev2oinpohae3ttsluuln4a?uibfe 5l\0rtlfrb6 ?a?el:e7$!n\0?e t8%ccp\0.%s9deelc.s T.@?-t.\t<J /\0=a\nP=Q Sex \0l KW Sin a$\0ane-lay% ge#-slediefuk ar r$via-:o ?+}:r? n \0:) ee%lone 1-esy666!-~v\n.!^`'~@#\0\np~===:=q";b(o,n)char*o;{for(k=n+m;*o++=*k;k+=9);}int + y=M*2,v,x,s,f,j,o;u(s){B(s));if(!gets(l))exit(0);return(o= + *l)=='y'||o=='Y'||o!='n'&&o!='N'&&u(s);}h(v,m){for(k=c;*k!='J';)if(m==*k++)break;m=k-c;if(v<0)W(v=m-v) + if(m==1)W(v+=11) \ No newline at end of file diff --git a/_includes/1990-dds.c.inc b/_includes/1990-dds.c.inc new file mode 100644 index 0000000..3f3a75d --- /dev/null +++ b/_includes/1990-dds.c.inc @@ -0,0 +1,24 @@ +#define O(b,f,u,s,c,a)b(){int o=f();switch(*p++){X u:_ o s b();X c:_ o a b();default:p--;_ o;}} +#define t(e,d,_,C)X e:f=fopen(B+d,_);C;fclose(f) +#define U(y,z)while(p=Q(s,y))*p++=z,*p=' ' +#define N for(i=0;i<11*R;i++)m[i]&& +#define I "%d %s\n",i,m[i] +#define X ;break;case +#define _ return +#define R 999 +typedef char*A;int*C,E[R],L[R],M[R],P[R],l,i,j;char B[R],F[2];A m[12*R],malloc +(),p,q,x,y,z,s,d,f,fopen();A Q(s,o)A s,o;{for(x=s;*x;x++){for(y=x,z=o;*z&&*y== +*z;y++)z++;if(z>o&&!*z)_ x;}_ 0;}main(){m[11*R]="E";while(puts("Ok"),gets(B) +)switch(*B){X'R':C=E;l=1;for(i=0;i<R;P[i++]=0);while(l){while(!(s=m[l]))l++;if +(!Q(s,"\"")){U("<>",'#');U("<=",'$');U(">=",'!');}d=B;while(*F=*s){*s=='"'&&j +++;if(j&1||!Q(" \t",F))*d++=*s;s++;}*d--=j=0;if(B[1]!='=')switch(*B){X'E':l=-1 +X'R':B[2]!='M'&&(l=*--C)X'I':B[1]=='N'?gets(p=B),P[*d]=S():(*(q=Q(B,"TH"))=0,p +=B+2,S()&&(p=q+4,l=S()-1))X'P':B[5]=='"'?*d=0,puts(B+6):(p=B+5,printf("%d\n",S +()))X'G':p=B+4,B[2]=='S'&&(*C++=l,p++),l=S()-1 X'F':*(q=Q(B,"TO"))=0;p=B+5;P[i +=B[3]]=S();p=q+2;M[i]=S();L[i]=l X'N':++P[*d]<=M[*d]&&(l=L[*d]);}else p=B+2,P[ +*B]=S();l++;}X'L':N printf(I)X'N':N free(m[i]),m[i]=0 X'B':_ 0 t('S',5,"w",N +fprintf(f,I))t('O',4,"r",while(fgets(B,R,f))(*Q(B,"\n")=0,G()))X 0:default:G() +;}_ 0;}G(){l=atoi(B);m[l]&&free(m[l]);(p=Q(B," "))?strcpy(m[l]=malloc(strlen(p +)),p+1):(m[l]=0,0);}O(S,J,'=',==,'#',!=)O(J,K,'<',<,'>',>)O(K,V,'$',<=,'!',>=) +O(V,W,'+',+,'-',-)O(W,Y,'*',*,'/',/)Y(){int o;_*p=='-'?p++,-Y():*p>='0'&&*p<= +'9'?strtol(p,&p,0):*p=='('?p++,o=S(),p++,o:P[*p++];} \ No newline at end of file diff --git a/_includes/1990-dds.patch.inc b/_includes/1990-dds.patch.inc new file mode 100644 index 0000000..8dd0598 --- /dev/null +++ b/_includes/1990-dds.patch.inc @@ -0,0 +1,14 @@ +--- dds.c ++++ dds.c +@@ -16,9 +16,9 @@ + =B+2,S()&&(p=q+4,l=S()-1))X'P':B[5]=='"'?*d=0,puts(B+6):(p=B+5,printf("%d\n",S + ()))X'G':p=B+4,B[2]=='S'&&(*C++=l,p++),l=S()-1 X'F':*(q=Q(B,"TO"))=0;p=B+5;P[i + =B[3]]=S();p=q+2;M[i]=S();L[i]=l X'N':++P[*d]<=M[*d]&&(l=L[*d]);}else p=B+2,P[ +-*B]=S();l++;}X'L':N printf(I)X'N':N free(m[i]),m[i]=0 X'B':_ 0 t('S',5,"w",N ++*B]=S();l++;}X'L':N printf(I)X'N':N(free(m[i]),0),m[i]=0 X'B':_ 0 t('S',5,"w",N + fprintf(f,I))t('O',4,"r",while(fgets(B,R,f))(*Q(B,"\n")=0,G()))X 0:default:G() +-;}_ 0;}G(){l=atoi(B);m[l]&&free(m[l]);(p=Q(B," "))?strcpy(m[l]=malloc(strlen(p ++;}_ 0;}G(){l=atoi(B);m[l]&&(free(m[l]),0);(p=Q(B," "))?strcpy(m[l]=malloc(strlen(p + )),p+1):(m[l]=0,0);}O(S,J,'=',==,'#',!=)O(J,K,'<',<,'>',>)O(K,V,'$',<=,'!',>=) + O(V,W,'+',+,'-',-)O(W,Y,'*',*,'/',/)Y(){int o;_*p=='-'?p++,-Y():*p>='0'&&*p<= + '9'?strtol(p,&p,0):*p=='('?p++,o=S(),p++,o:P[*p++];} \ No newline at end of file diff --git a/_includes/1990-dg.c.inc b/_includes/1990-dg.c.inc new file mode 100644 index 0000000..a3387a4 --- /dev/null +++ b/_includes/1990-dg.c.inc @@ -0,0 +1,69 @@ +#include <stdio.h> + +#define d define + +#d b12(x) 12 x +#d a13(x) x 13 +#d a16(x) x 16 +#d a32(x) x 32 +#d acb(x) x] +#d acc(x) x} +#d aco(x) x: +#d bco(x) :x +#d acp(x) x) +#d bef(x) EOF x +#d aeq(x) x= +#d afo(x) x for +#d age(x) x fgetc +#d asi(x) x stdin +#d aso(x) x stdout +#d bgt(x) >x +#d ai(x) x i +#d aj(x) x j +#d al(x) x l +#d ami(x) x- +#d bne(x) !=x +#d aob(x) x[ +#d aop(x) x( +#d apl(x) x+ +#d bpu(x) fputc x +#d bqm(x) ?x +#d aqm(x) x? +#d aqu(x) x' +#d ase(x) x; +#d awh(x) x while +#d axo(x) x^ +#d a0(x) x 0 +#d b13(x) 13 x +#d b16(x) 16 x +#d b19(x) 19 x +#d b48(x) 48 x +#d a64(x) x 64 +#d b66(x) 66 x +#d bcb(x) ]x +#d bch(x) char x +#d bcm(x) ,x +#d acm(x) x, +#d bcp(x) )x +#d beq(x) =x +#d bex(x) extern x +#d bi(x) i x +#d bin(x) int x +#d bix(x) index x +#d bj(x) j x +#d bl(x) l x +#d alt(x) x< +#d bma(x) main x +#d bob(x) [x +#d boc(x) {x +#d bop(x) (x +#d bpl(x) +x +#d app(x) x++ +#d bqu(x) 'x +#d bse(x) ;x +#d bst(x) *x + +bma(acp(bop(app(bcp(ai(boc(ase(bch(a16(bl(alt(bob(ai(b66(ase(bcb(a0(bcm(aeq(bst(acb(bj(a64(bse(aob(bin(al(bi(aeq(bse(ai(bex(aop(bch(afo(bst(ase(bix(()))))))))))))))))))))))))))))))))))))))) +bl(ai(bob(aob(bi(al(bcb(aop(beq(apl(b13(a13(bpl(aeq(bop(acb(bl(bob(a32(bi(bpl(apl(b16(bcb(ai(beq(b19(aob(bpl(bop(l)))))))))))))))))))))))))))))) +bpl(acp(b48(acp(asi(bcb(aop(beq(age(bop(aeq(bi(ai(bgt(aop(b12(aop(bqm(awh(b12(ase(bco(acp(bi(acp(bcp(acp(bpl(aqu(bqu(A)))))))))))))))))))))))))))))) +bne(acc(bef(ase(bcp(acp(aso(bpu(acm(ai(bop(aco(bop(acb(bj(al(beq(ami(bix(aj(axo(bop(a16(aob(bl(al(aqm(bcm(acp(acp(i)))))))))))))))))))))))))))))) \ No newline at end of file diff --git a/_includes/1990-dg.patch.inc b/_includes/1990-dg.patch.inc new file mode 100644 index 0000000..a09896a --- /dev/null +++ b/_includes/1990-dg.patch.inc @@ -0,0 +1,132 @@ +--- dg.c ++++ dg.c +@@ -2,68 +2,68 @@ + + #define d define + +-#d b12(x) 12 x +-#d a13(x) x 13 +-#d a16(x) x 16 +-#d a32(x) x 32 +-#d acb(x) x] +-#d acc(x) x} +-#d aco(x) x: +-#d bco(x) :x +-#d acp(x) x) +-#d bef(x) EOF x +-#d aeq(x) x= +-#d afo(x) x for +-#d age(x) x fgetc +-#d asi(x) x stdin +-#d aso(x) x stdout +-#d bgt(x) >x +-#d ai(x) x i +-#d aj(x) x j +-#d al(x) x l +-#d ami(x) x- +-#d bne(x) !=x +-#d aob(x) x[ +-#d aop(x) x( +-#d apl(x) x+ +-#d bpu(x) fputc x +-#d bqm(x) ?x +-#d aqm(x) x? +-#d aqu(x) x' +-#d ase(x) x; +-#d awh(x) x while +-#d axo(x) x^ +-#d a0(x) x 0 +-#d b13(x) 13 x +-#d b16(x) 16 x +-#d b19(x) 19 x +-#d b48(x) 48 x +-#d a64(x) x 64 +-#d b66(x) 66 x +-#d bcb(x) ]x +-#d bch(x) char x +-#d bcm(x) ,x +-#d acm(x) x, +-#d bcp(x) )x +-#d beq(x) =x +-#d bex(x) extern x +-#d bi(x) i x +-#d bin(x) int x +-#d bix(x) index x +-#d bj(x) j x +-#d bl(x) l x +-#d alt(x) x< +-#d bma(x) main x +-#d bob(x) [x +-#d boc(x) {x +-#d bop(x) (x +-#d bpl(x) +x +-#d app(x) x++ +-#d bqu(x) 'x +-#d bse(x) ;x +-#d bst(x) *x ++#define b12(x) 12 x ++#define a13(x) x 13 ++#define a16(x) x 16 ++#define a32(x) x 32 ++#define acb(x) x] ++#define acc(x) x} ++#define aco(x) x: ++#define bco(x) :x ++#define acp(x) x) ++#define bef(x) EOF x ++#define aeq(x) x= ++#define afo(x) x for ++#define age(x) x fgetc ++#define asi(x) x stdin ++#define aso(x) x stdout ++#define bgt(x) >x ++#define ai(x) x i ++#define aj(x) x j ++#define al(x) x l ++#define ami(x) x- ++#define bne(x) !=x ++#define aob(x) x[ ++#define aop(x) x( ++#define apl(x) x+ ++#define bpu(x) fputc x ++#define bqm(x) ?x ++#define aqm(x) x? ++#define aqu(x) x' ++#define ase(x) x; ++#define awh(x) x while ++#define axo(x) x^ ++#define a0(x) x 0 ++#define b13(x) 13 x ++#define b16(x) 16 x ++#define b19(x) 19 x ++#define b48(x) 48 x ++#define a64(x) x 64 ++#define b66(x) 66 x ++#define bcb(x) ]x ++#define bch(x) char x ++#define bcm(x) ,x ++#define acm(x) x, ++#define bcp(x) )x ++#define beq(x) =x ++#define bex(x) extern x ++#define bi(x) i x ++#define bin(x) int x ++#define bix(x) index x ++#define bj(x) j x ++#define bl(x) l x ++#define alt(x) x< ++#define bma(x) main x ++#define bob(x) [x ++#define boc(x) {x ++#define bop(x) (x ++#define bpl(x) +x ++#define app(x) x++ ++#define bqu(x) 'x ++#define bse(x) ;x ++#define bst(x) *x + + bma(acp(bop(app(bcp(ai(boc(ase(bch(a16(bl(alt(bob(ai(b66(ase(bcb(a0(bcm(aeq(bst(acb(bj(a64(bse(aob(bin(al(bi(aeq(bse(ai(bex(aop(bch(afo(bst(ase(bix(()))))))))))))))))))))))))))))))))))))))) + bl(ai(bob(aob(bi(al(bcb(aop(beq(apl(b13(a13(bpl(aeq(bop(acb(bl(bob(a32(bi(bpl(apl(b16(bcb(ai(beq(b19(aob(bpl(bop(l)))))))))))))))))))))))))))))) +-bpl(acp(b48(acp(asi(bcb(aop(beq(age(bop(aeq(bi(ai(bgt(aop(b12(aop(bqm(awh(b12(ase(bco(acp(bi(acp(bcp(acp(bpl(aqu(bqu(A)))))))))))))))))))))))))))))) ++bpl(acp(b48(acp(asi(bcb(aop(beq(age(bop(aeq(bi(ai(bgt(aop(b12(aop(bqm(awh(b12(ase(bco(acp(bi(acp(bcp(acp(bpl('A')))))))))))))))))))))))))))) + bne(acc(bef(ase(bcp(acp(aso(bpu(acm(ai(bop(aco(bop(acb(bj(al(beq(ami(bix(aj(axo(bop(a16(aob(bl(al(aqm(bcm(acp(acp(i)))))))))))))))))))))))))))))) \ No newline at end of file diff --git a/_includes/1990-jaw.c.inc b/_includes/1990-jaw.c.inc new file mode 100644 index 0000000..8733c88 --- /dev/null +++ b/_includes/1990-jaw.c.inc @@ -0,0 +1,22 @@ +#define C char +#define F X,perror("oops"),1 +#define G getchar() +#define I ;if( +#define P putchar +#define Q 256 +#define W ;while( +#define X return 0 +#include<stdio.h> +long M,N,c,f,m,o,r,s,w;y(l){o^=l;m+=l+1;f=f*2+l+(f>>31&1);}int +O,S,e,i,k,n,q,t[69001];b(g){k=4 W g<k)y(P((C)(w>>--k*8)&255));w=0;}C D[Q*Q],h +[Q*Q];main(g,V)C**V;{I**V-97)X,a()W G-10)W(g=G)+1&&g-'x')if(g-10){I +4<k)b(0)I g>32&g<'v')w=w*85+g-33,++k;else{I +g-'z'|k)F;w=0;k=5;}}W G-78)I scanf("%ld%lx E%lx S%lx R%lx ",&M,&N,&c,&s,&r)-5)F +I M){b(g=3-(M-1&3))W g--)y(0);}I(M-N|c-o|s-m|r-f)&4294967295)F;X;}long +g(){C*p I m<f&n<k&&(m=(1L<<++n)-1)||O>=S){O=0;S=fread(D,1,n,stdin)*8 I +S<8)X-1;S-=n-1;}p=D+O/8;q=O&7;O+=n;X,(1<<8-q)-1&*p>>q|m&((15<n+q)*p[2]*Q|p[1]& +255)<<8-q;}a(){C*p=D+Q;G;G;k=G;e=k>>7&1;k&=31 I k>16)F;w=Q +W w--)t[w]=0,h[w]=w;n=8;f=Q+e;i=o=w=g()I o<0)X,1;P(i)W(w=g())+1){I +w==Q&e){W w--)t[w]=0;m=n=8;f=Q I(w=g())<0)X;}c=w +I w>=f)*p++=i,w=o W w>=Q)*p++=h[w],w=t[w];P(i=h[w])W +p>D+Q)P(*--p)I(w=f)<1L<<k)t[w]=o,h[f++]=i;o=c;}X;} \ No newline at end of file diff --git a/_includes/1990-pjr.c.inc b/_includes/1990-pjr.c.inc new file mode 100644 index 0000000..96a5c9f --- /dev/null +++ b/_includes/1990-pjr.c.inc @@ -0,0 +1,14 @@ +#include <stdio.h> +#define A(a) G a(); +#define B(a) G (*a)(); +#define C(a,b) G a() { printf(b); return X; } +typedef struct F G;A(a)A(b)A(c)A(d)A(e)A(f)A(g)A(h)A(i)A(j)A(k)A(l)A(m)A(n)A( +o)A(p)A(q)A(r)A(s)A(t)A(u)A(v)A(w)A(x)A(y)A(z)A(S)A(N)void Q();struct F{B(a)B +(b)B(c)B(d)B(e)B(f)B(g)B(h)B(i)B(j)B(k)B(l)B(m)B(n)B(o)B(p)B(q)B(r)B(s)B(t)B( +u)B(v)B(w)B(x)B(y)B(z)B(S)B(N)void(*Q)();}X={a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p, +q,r,s,t,u,v,w,x,y,z,S,N,Q};C(a,"z")C(b,"y")C(c,"x")C(d,"w")C(e,"v")C(f,"u")C( +g,"t")C(h,"s")C(i,"r")C(j,"q")C(k,"p")C(l,"o")C(m,"n")C(n,"m")C(o,"l")C(p,"k" +)C(q,"j")C(r,"i")C(s,"h")C(t,"g")C(u,"f")C(v,"e")C(w,"d")C(x,"c")C(y,"b")C(z, +"a")C(S," ")C(N,"\n") void Q(){}main(){X=g().s().v().S().j().f().r().x().p(). +S().y().i().l().d().m().S().u().l().c().S().q().f().n().k().v().w().S().l().e +().v().i().S().g().s().v().S().o().z().a().b().S().w().l().t().N();} \ No newline at end of file diff --git a/_includes/1990-scjones.c.inc b/_includes/1990-scjones.c.inc new file mode 100644 index 0000000..a66bebf --- /dev/null +++ b/_includes/1990-scjones.c.inc @@ -0,0 +1,46 @@ +char*a??(??)=??< +"??=include<stdio.h>", +"??=include<stdlib.h>", +"??=define o stdout", +"??=define b break;case", +"??=define s(p)fputs(p,o);", +"??=define c(p)fputc(p,o);", +"void t(p,f)char*p;??<f&&c('??/"')", +"for(;;p++)??<switch(*p)??<case 0:f&&", +"s(??/"??/??/??/",??/")c('??/??/n')return;case", +"'??=':s(??/"???/??/?=??/")b'??<':s(??/"???/??/?<??/")", +"b'??>':s(??/"???/??/?>??/")b'??(':s(??/"???/??/?(??/")b'??)'", +":s(??/"???/??/?)??/")b'??/??/??/??/':f&&s(??/"???/??/?/??/")", +"s(??/"???/??/?/??/")b'??/??/n':if(f)s(??/"???/??/?/n??/")", +"else case'??/"':if(f)s(??/"???/??/?/??/??/??/"??/")", +"else default:c(*p)??>??>??>main()??<char**p", +";t(??/"char*a??(??)=??<??/",0);for(p=a;*p", +";p++)t(*p,1);t(??/"0??>;??/",0);for(p=a", +";*p;p++)t(*p,0);exit(!ferror(o)&&", +"!fclose(o)?EXIT_SUCCESS", +":EXIT_FAILURE);", +"/*NOTREACHED*/", +"??>", +0??>; +??=include<stdio.h> +??=include<stdlib.h> +??=define o stdout +??=define b break;case +??=define s(p)fputs(p,o); +??=define c(p)fputc(p,o); +void t(p,f)char*p;??<f&&c('"') +for(;;p++)??<switch(*p)??<case 0:f&& +s("??/",")c('??/n')return;case +'??=':s("???/?=")b'??<':s("???/?<") +b'??>':s("???/?>")b'??(':s("???/?(")b'??)' +:s("???/?)")b'??/??/':f&&s("???/?/") +s("???/?/")b'??/n':if(f)s("???/?/n") +else case'"':if(f)s("???/?/??/"") +else default:c(*p)??>??>??>main()??<char**p +;t("char*a??(??)=??<",0);for(p=a;*p +;p++)t(*p,1);t("0??>;",0);for(p=a +;*p;p++)t(*p,0);exit(!ferror(o)&& +!fclose(o)?EXIT_SUCCESS +:EXIT_FAILURE); +/*NOTREACHED*/ +??> \ No newline at end of file diff --git a/_includes/1990-stig.c.inc b/_includes/1990-stig.c.inc new file mode 100644 index 0000000..3410062 --- /dev/null +++ b/_includes/1990-stig.c.inc @@ -0,0 +1 @@ +c \ No newline at end of file diff --git a/_includes/1990-tbr.c.inc b/_includes/1990-tbr.c.inc new file mode 100644 index 0000000..cba9d70 --- /dev/null +++ b/_includes/1990-tbr.c.inc @@ -0,0 +1,23 @@ + +#define D ,close( + +char *c,q [512 ],m[ 256 +],*v[ 99], **u, *i[3];int f[2],p;main (){for + (m[m [60]= m[62 ]=32 ]=m[* m=124 [m]= 9]=6; + e(-8) ,gets (1+( c=q) )|| exit (0); r(0,0) + )for( ;*++ c;); }r(t, o){ *i=i [2]= 0;for + (u=v +98 ;m[*--c] ^9;m [*c] &32 ?i[*c + &2]= *u,u- v^98 &&++u: + + 3 )if(!m[*c]){for(*++c=0;!m[*--c];); + * --u= ++c;}u-v^98?strcmp(*u,"cd")?*c?pipe(f),o=f[ + 1 ]: + 4 ,(p=fork())?e(p),o?r(o,0)D o)D*f): + 1 ,wait(0):(o?dup2(*f,0)D*f)D o):*i? + 5 D 0),e(open(*i,0)): + 9 ,t?dup2(t,1)D t):i[ + 2 ]? + 6 D 1),e(creat(i[2],438)): + 5 ,e(execvp(*u,u))):e(chdir(u[1])*2): + 3 ;}e(x){x<0?write(2,"?\n$ "-x/4,2),x+1||exit(1): + 5 ;} \ No newline at end of file diff --git a/_includes/1990-tbr.patch.inc b/_includes/1990-tbr.patch.inc new file mode 100644 index 0000000..a2d36a2 --- /dev/null +++ b/_includes/1990-tbr.patch.inc @@ -0,0 +1,18 @@ +--- tbr.c ++++ tbr.c +@@ -4,7 +4,7 @@ + char *c,q [512 ],m[ 256 + ],*v[ 99], **u, *i[3];int f[2],p;main (){for + (m[m [60]= m[62 ]=32 ]=m[* m=124 [m]= 9]=6; +- e(-8) ,gets (1+( c=q) )|| exit (0); r(0,0) ++ e(-8) ,gets (1+( c=q) )|| (exit( 0),0); r(0,0) + )for( ;*++ c;); }r(t, o){ *i=i [2]= 0;for + (u=v +98 ;m[*--c] ^9;m [*c] &32 ?i[*c + &2]= *u,u- v^98 &&++u: +@@ -19,5 +19,5 @@ + 2 ]? + 6 D 1),e(creat(i[2],438)): + 5 ,e(execvp(*u,u))):e(chdir(u[1])*2): +- 3 ;}e(x){x<0?write(2,"?\n$ "-x/4,2),x+1||exit(1): ++ 3 ;}e(x){x<0?write(2,"?\n$ "-x/4,2),x+1||(exit(1),0): + 5 ;} \ No newline at end of file diff --git a/_includes/1990-theorem.c.inc b/_includes/1990-theorem.c.inc new file mode 100644 index 0000000..77998be --- /dev/null +++ b/_includes/1990-theorem.c.inc @@ -0,0 +1,93 @@ +#include <stdio.h> +#include <math.h> +#define X +#define Y {} +#define C } +#define o { +#undef main +char m[500][99],v[99],R; +int*a,b,n,i,j,W,A; +float Q,G,D,M,T,B,O,U,V,N,y,e(); +P(g,R,u)float*g,R,u;{int c;for(*g=1,c=u;c--;*g*=R);} +X +K(g,R,u)float*g,u;char R; +o +if(R=='+')*g+=u; +if(R=='-')*g-=u; +if(R=='*')*g*=u; +if(R=='/')*g/=u; +if(R=='^')P(g,*g,u); +C +w(g,R,u)float*g,u;char R; +/**/{int b,f;A=atoi(*++a);b=atoi(*++a);while((f=A+b)<15000){printf("%d\n",f);A=b;b=f;}} +main(A,a)int A;char*a[]; +o o +if(!strcmp(*++a,"-r"))S(); +D=atof(*++a); +T=atof(*++a); +B=atof(*++a); +M=atof(*(4+(a-=3))); +C +while(D<T) +o +U=e((G=B/2,*a),D,M,a); +V=e(*a,Q=D+G,M+G*U,a); +/*/ +z;/*/ +N=2*e(*a,Q,M+G*V,a); +M+=B*V/3+B*N/6+B*e(*a,D+=B,M+G*N,a)/6+G*U/3; +printf("%f %f\n",D,M); +C +while(T=0) +; +W=D=1; +; +while(W!=1) +o o +strcpy(j+m,v); +o +if((j-=W)<=W)break; +strcpy(j+m,m+j-W); +C +while(strcmp(m+j-W,v)>0) +j=i; +strcpy(v,i+m); +C +for(i=(W/=3)-1;++i<n;) +; +C +do +; +while(0); +for(W=1;(W=W*3+1)<n;); +C +float e(f,D,M,a)char*f,*a[];float D,M; +o +#define main L +O=0; +R='+'; +for(;*f;f++) +if(*f=='y')K(&O,R,M); +else if((*f>='0')&&(*f<='9'))K(&O,R,(float)*f-'0'); +else if(*f=='x')K(&O,R,D); +else if(1)R=*f; +if(1); +return O; +for(j=0;j<n;puts(j++[m])); +e("",O,&O,a); +n=j-(O=1); +while(gets(j++[m])); +if(!strcmp(*++a,"-r"))S(); +C +/**/main(A,a)int A;char*a[]; +Y +S(){while(gets(b++[m]));for(b--;b--;puts(b[m]));} +char*f,m[500][99],R,v[99]; +int b,W,n,i,j,z; +float Q,G,D,M,T,O,B,U,V,N,e(); +#define Y +#define X {} +#define o } +#define C { +#include <stdio.h> +#include <math.h> \ No newline at end of file diff --git a/_includes/1990-theorem.patch.inc b/_includes/1990-theorem.patch.inc new file mode 100644 index 0000000..6e05029 --- /dev/null +++ b/_includes/1990-theorem.patch.inc @@ -0,0 +1,14 @@ +--- theorem.c ++++ theorem.c +@@ -1,4 +1,5 @@ + #include <stdio.h> ++#include <stdlib.h> + #include <math.h> + #define X + #define Y {} +@@ -90,4 +91,5 @@ + #define o } + #define C { + #include <stdio.h> ++#include <stdlib.h> + #include <math.h> \ No newline at end of file diff --git a/_includes/1990-westley.c.inc b/_includes/1990-westley.c.inc new file mode 100644 index 0000000..02ff4bf --- /dev/null +++ b/_includes/1990-westley.c.inc @@ -0,0 +1,107 @@ +char*lie; + + double time, me= !0XFACE, + + not; int rested, get, out; + + main(ly, die) char ly, **die ;{ + + signed char lotte, + + +dear; (char)lotte--; + + for(get= !me;; not){ + + 1 - out & out ;lie;{ + + char lotte, my= dear, + + **let= !!me *!not+ ++die; + + (char*)(lie= + + +"The gloves are OFF this time, I detest you, snot\n\0sed GEEK!"); + + do {not= *lie++ & 0xF00L* !me; + + #define love (char*)lie - + + love 1s *!(not= atoi(let + + [get -me? + + (char)lotte- + + +(char)lotte: my- *love - + + 'I' - *love - 'U' - + + 'I' - (long) - 4 - 'U' ])- !! + + (time =out= 'a'));} while( my - dear + + && 'I'-1l -get- 'a'); break;}} + + (char)*lie++; + + +(char)*lie++, (char)*lie++; hell:0, (char)*lie; + + get *out* (short)ly -0-'R'- get- 'a'^rested; + + do {auto*eroticism, + + that; puts(*( out + + - 'c' + +-('P'-'S') +die+ -2 ));}while(!"you're at it"); + + +for (*((char*)&lotte)^= + + (char)lotte; (love ly) [(char)++lotte+ + + !!0xBABE];){ if ('I' -lie[ 2 +(char)lotte]){ 'I'-1l ***die; } + + else{ if ('I' * get *out* ('I'-1l **die[ 2 ])) *((char*)&lotte) -= + + '4' - ('I'-1l); not; for(get=! + + +get; !out; (char)*lie & 0xD0- !not) return!! + + (char)lotte;} + + +(char)lotte; + + do{ not* putchar(lie [out + + *!not* !!me +(char)lotte]); + + not; for(;!'a';);}while( + + love (char*)lie);{ + + +register this; switch( (char)lie + + [(char)lotte] -1s *!out) { + + char*les, get= 0xFF, my; case' ': + + *((char*)&lotte) += 15; !not +(char)*lie*'s'; + + this +1s+ not; default: 0xF +(char*)lie;}}} + + get - !out; + + if (not--) + + goto hell; + + exit( (char)lotte);} \ No newline at end of file diff --git a/_includes/1990-westley.patch.inc b/_includes/1990-westley.patch.inc new file mode 100644 index 0000000..211a73e --- /dev/null +++ b/_includes/1990-westley.patch.inc @@ -0,0 +1,27 @@ +--- westley.c ++++ westley.c +@@ -28,7 +28,7 @@ + + #define love (char*)lie - + +- love 1s *!(not= atoi(let ++ love 1 *!(not= atoi(let + + [get -me? + +@@ -90,13 +90,13 @@ + + register this; switch( (char)lie + +- [(char)lotte] -1s *!out) { ++ [(char)lotte] -1 *!out) { + + char*les, get= 0xFF, my; case' ': + + *((char*)&lotte) += 15; !not +(char)*lie*'s'; + +- this +1s+ not; default: 0xF +(char*)lie;}}} ++ this +1+ not; default: 0xF +(char*)lie;}}} + + get - !out; + \ No newline at end of file diff --git a/_src/1990/baruch.c b/_src/1990/baruch.c new file mode 100644 index 0000000..16f5cc0 --- /dev/null +++ b/_src/1990/baruch.c @@ -0,0 +1,6 @@ +v,i,j,k,l,s,a[99]; +main() +{ + for(scanf("%d",&s);*a-s;v=a[j*=v]-a[i],k=i=s*k&&++a[--i]) + ; +} diff --git a/_src/1990/cmills.c b/_src/1990/cmills.c new file mode 100644 index 0000000..6848175 --- /dev/null +++ b/_src/1990/cmills.c @@ -0,0 +1,30 @@ +#include +#include +#define S(q)B(*e=0),q,p); +#define W(w)if((w)<22)v= -v;else v-=10;else +#define F for(r=d;r1;){if(r-d>N*3/4){B(8));F++r)*r=c[(r-d)%13];F)w= +*(g=d+rand()%N),*g= +*r,*r++=w;r=d;}for(;;){B(3),y);if(!gets(l)||(w=atoi(l))<1)exit(0);if(w&1||w>M||w>y)B(1),y=w/2&&u(5)&&(y+=(3*(h(0,1[q])==10)-1)*w/2);if(x==-21)goto +_;if(v==-21){y+=w/2;goto +_;}while(x>-17&&x<17)H(x,g)while((v==20||*p==-1[e])&&y>=w&&u(6)){y-=w;++s;for(g=e++;2[g]= +*g,g!=p;)--g;*g++= +*e;*g=' ';i:v=h(h(0,*p),*e++= +*r++);S(t)if(*p=='A'&&-1[e]!= +*p)goto +_;}if(f=y>=w&&u(7))y-=w,H(v,e)while(!f&&v<22&&u(4)){H(v,e)if(v<22)S(t)}_:x<0&&(x= +-x);v<0&&(v= +-v);if(v<22)if(v==x)j+=w*++f;else +if(x>21||v>x)j+=w*2*++f;if(s--){*e++=' ';*e++= +*p;*e=0;for(e=p;*e=2[e];)e++;goto +i;}y+=j;S(q)};} diff --git a/_src/1990/cmills.new.c b/_src/1990/cmills.new.c new file mode 100644 index 0000000..8a9b256 --- /dev/null +++ b/_src/1990/cmills.new.c @@ -0,0 +1,30 @@ +#include +#include +#define S(q)B(*e=0),q,p); +#define W(w)if((w)<22)v= -v;else v-=10;else +#define F for(r=d;r1;){if(r-d>N*3/4){B(8));F++r)*r=c[(r-d)%13];F)w= +*(g=d+rand()%N),*g= +*r,*r++=w;r=d;}for(;;){B(3),y);if(!gets(l)||(w=atoi(l))<1)exit(0);if(w&1||w>M||w>y)B(1),y=w/2&&u(5)&&(y+=(3*(h(0,1[q])==10)-1)*w/2);if(x==-21)goto +_;if(v==-21){y+=w/2;goto +_;}while(x>-17&&x<17)H(x,g)while((v==20||*p==-1[e])&&y>=w&&u(6)){y-=w;++s;for(g=e++;2[g]= +*g,g!=p;)--g;*g++= +*e;*g=' ';i:v=h(h(0,*p),*e++= +*r++);S(t)if(*p=='A'&&-1[e]!= +*p)goto +_;}if(f=y>=w&&u(7))y-=w,H(v,e)while(!f&&v<22&&u(4)){H(v,e)if(v<22)S(t)}_:x<0&&(x= +-x);v<0&&(v= +-v);if(v<22)if(v==x)j+=w*++f;else +if(x>21||v>x)j+=w*2*++f;if(s--){*e++=' ';*e++= +*p;*e=0;for(e=p;*e=2[e];)e++;goto +i;}y+=j;S(q)};} diff --git a/_src/1990/dds.c b/_src/1990/dds.c new file mode 100644 index 0000000..176b266 --- /dev/null +++ b/_src/1990/dds.c @@ -0,0 +1,24 @@ +#define O(b,f,u,s,c,a)b(){int o=f();switch(*p++){X u:_ o s b();X c:_ o a b();default:p--;_ o;}} +#define t(e,d,_,C)X e:f=fopen(B+d,_);C;fclose(f) +#define U(y,z)while(p=Q(s,y))*p++=z,*p=' ' +#define N for(i=0;i<11*R;i++)m[i]&& +#define I "%d %s\n",i,m[i] +#define X ;break;case +#define _ return +#define R 999 +typedef char*A;int*C,E[R],L[R],M[R],P[R],l,i,j;char B[R],F[2];A m[12*R],malloc +(),p,q,x,y,z,s,d,f,fopen();A Q(s,o)A s,o;{for(x=s;*x;x++){for(y=x,z=o;*z&&*y== +*z;y++)z++;if(z>o&&!*z)_ x;}_ 0;}main(){m[11*R]="E";while(puts("Ok"),gets(B) +)switch(*B){X'R':C=E;l=1;for(i=0;i",'#');U("<=",'$');U(">=",'!');}d=B;while(*F=*s){*s=='"'&&j +++;if(j&1||!Q(" \t",F))*d++=*s;s++;}*d--=j=0;if(B[1]!='=')switch(*B){X'E':l=-1 +X'R':B[2]!='M'&&(l=*--C)X'I':B[1]=='N'?gets(p=B),P[*d]=S():(*(q=Q(B,"TH"))=0,p +=B+2,S()&&(p=q+4,l=S()-1))X'P':B[5]=='"'?*d=0,puts(B+6):(p=B+5,printf("%d\n",S +()))X'G':p=B+4,B[2]=='S'&&(*C++=l,p++),l=S()-1 X'F':*(q=Q(B,"TO"))=0;p=B+5;P[i +=B[3]]=S();p=q+2;M[i]=S();L[i]=l X'N':++P[*d]<=M[*d]&&(l=L[*d]);}else p=B+2,P[ +*B]=S();l++;}X'L':N printf(I)X'N':N free(m[i]),m[i]=0 X'B':_ 0 t('S',5,"w",N +fprintf(f,I))t('O',4,"r",while(fgets(B,R,f))(*Q(B,"\n")=0,G()))X 0:default:G() +;}_ 0;}G(){l=atoi(B);m[l]&&free(m[l]);(p=Q(B," "))?strcpy(m[l]=malloc(strlen(p +)),p+1):(m[l]=0,0);}O(S,J,'=',==,'#',!=)O(J,K,'<',<,'>',>)O(K,V,'$',<=,'!',>=) +O(V,W,'+',+,'-',-)O(W,Y,'*',*,'/',/)Y(){int o;_*p=='-'?p++,-Y():*p>='0'&&*p<= +'9'?strtol(p,&p,0):*p=='('?p++,o=S(),p++,o:P[*p++];} diff --git a/_src/1990/dds.new.c b/_src/1990/dds.new.c new file mode 100644 index 0000000..3cac21f --- /dev/null +++ b/_src/1990/dds.new.c @@ -0,0 +1,24 @@ +#define O(b,f,u,s,c,a)b(){int o=f();switch(*p++){X u:_ o s b();X c:_ o a b();default:p--;_ o;}} +#define t(e,d,_,C)X e:f=fopen(B+d,_);C;fclose(f) +#define U(y,z)while(p=Q(s,y))*p++=z,*p=' ' +#define N for(i=0;i<11*R;i++)m[i]&& +#define I "%d %s\n",i,m[i] +#define X ;break;case +#define _ return +#define R 999 +typedef char*A;int*C,E[R],L[R],M[R],P[R],l,i,j;char B[R],F[2];A m[12*R],malloc +(),p,q,x,y,z,s,d,f,fopen();A Q(s,o)A s,o;{for(x=s;*x;x++){for(y=x,z=o;*z&&*y== +*z;y++)z++;if(z>o&&!*z)_ x;}_ 0;}main(){m[11*R]="E";while(puts("Ok"),gets(B) +)switch(*B){X'R':C=E;l=1;for(i=0;i",'#');U("<=",'$');U(">=",'!');}d=B;while(*F=*s){*s=='"'&&j +++;if(j&1||!Q(" \t",F))*d++=*s;s++;}*d--=j=0;if(B[1]!='=')switch(*B){X'E':l=-1 +X'R':B[2]!='M'&&(l=*--C)X'I':B[1]=='N'?gets(p=B),P[*d]=S():(*(q=Q(B,"TH"))=0,p +=B+2,S()&&(p=q+4,l=S()-1))X'P':B[5]=='"'?*d=0,puts(B+6):(p=B+5,printf("%d\n",S +()))X'G':p=B+4,B[2]=='S'&&(*C++=l,p++),l=S()-1 X'F':*(q=Q(B,"TO"))=0;p=B+5;P[i +=B[3]]=S();p=q+2;M[i]=S();L[i]=l X'N':++P[*d]<=M[*d]&&(l=L[*d]);}else p=B+2,P[ +*B]=S();l++;}X'L':N printf(I)X'N':N(free(m[i]),0),m[i]=0 X'B':_ 0 t('S',5,"w",N +fprintf(f,I))t('O',4,"r",while(fgets(B,R,f))(*Q(B,"\n")=0,G()))X 0:default:G() +;}_ 0;}G(){l=atoi(B);m[l]&&(free(m[l]),0);(p=Q(B," "))?strcpy(m[l]=malloc(strlen(p +)),p+1):(m[l]=0,0);}O(S,J,'=',==,'#',!=)O(J,K,'<',<,'>',>)O(K,V,'$',<=,'!',>=) +O(V,W,'+',+,'-',-)O(W,Y,'*',*,'/',/)Y(){int o;_*p=='-'?p++,-Y():*p>='0'&&*p<= +'9'?strtol(p,&p,0):*p=='('?p++,o=S(),p++,o:P[*p++];} diff --git a/_src/1990/dg.c b/_src/1990/dg.c new file mode 100644 index 0000000..348efd2 --- /dev/null +++ b/_src/1990/dg.c @@ -0,0 +1,69 @@ +#include + +#define d define + +#d b12(x) 12 x +#d a13(x) x 13 +#d a16(x) x 16 +#d a32(x) x 32 +#d acb(x) x] +#d acc(x) x} +#d aco(x) x: +#d bco(x) :x +#d acp(x) x) +#d bef(x) EOF x +#d aeq(x) x= +#d afo(x) x for +#d age(x) x fgetc +#d asi(x) x stdin +#d aso(x) x stdout +#d bgt(x) >x +#d ai(x) x i +#d aj(x) x j +#d al(x) x l +#d ami(x) x- +#d bne(x) !=x +#d aob(x) x[ +#d aop(x) x( +#d apl(x) x+ +#d bpu(x) fputc x +#d bqm(x) ?x +#d aqm(x) x? +#d aqu(x) x' +#d ase(x) x; +#d awh(x) x while +#d axo(x) x^ +#d a0(x) x 0 +#d b13(x) 13 x +#d b16(x) 16 x +#d b19(x) 19 x +#d b48(x) 48 x +#d a64(x) x 64 +#d b66(x) 66 x +#d bcb(x) ]x +#d bch(x) char x +#d bcm(x) ,x +#d acm(x) x, +#d bcp(x) )x +#d beq(x) =x +#d bex(x) extern x +#d bi(x) i x +#d bin(x) int x +#d bix(x) index x +#d bj(x) j x +#d bl(x) l x +#d alt(x) x< +#d bma(x) main x +#d bob(x) [x +#d boc(x) {x +#d bop(x) (x +#d bpl(x) +x +#d app(x) x++ +#d bqu(x) 'x +#d bse(x) ;x +#d bst(x) *x + +bma(acp(bop(app(bcp(ai(boc(ase(bch(a16(bl(alt(bob(ai(b66(ase(bcb(a0(bcm(aeq(bst(acb(bj(a64(bse(aob(bin(al(bi(aeq(bse(ai(bex(aop(bch(afo(bst(ase(bix(()))))))))))))))))))))))))))))))))))))))) +bl(ai(bob(aob(bi(al(bcb(aop(beq(apl(b13(a13(bpl(aeq(bop(acb(bl(bob(a32(bi(bpl(apl(b16(bcb(ai(beq(b19(aob(bpl(bop(l)))))))))))))))))))))))))))))) +bpl(acp(b48(acp(asi(bcb(aop(beq(age(bop(aeq(bi(ai(bgt(aop(b12(aop(bqm(awh(b12(ase(bco(acp(bi(acp(bcp(acp(bpl(aqu(bqu(A)))))))))))))))))))))))))))))) +bne(acc(bef(ase(bcp(acp(aso(bpu(acm(ai(bop(aco(bop(acb(bj(al(beq(ami(bix(aj(axo(bop(a16(aob(bl(al(aqm(bcm(acp(acp(i)))))))))))))))))))))))))))))) diff --git a/_src/1990/dg.new.c b/_src/1990/dg.new.c new file mode 100644 index 0000000..8b1c7ba --- /dev/null +++ b/_src/1990/dg.new.c @@ -0,0 +1,69 @@ +#include + +#define d define + +#define b12(x) 12 x +#define a13(x) x 13 +#define a16(x) x 16 +#define a32(x) x 32 +#define acb(x) x] +#define acc(x) x} +#define aco(x) x: +#define bco(x) :x +#define acp(x) x) +#define bef(x) EOF x +#define aeq(x) x= +#define afo(x) x for +#define age(x) x fgetc +#define asi(x) x stdin +#define aso(x) x stdout +#define bgt(x) >x +#define ai(x) x i +#define aj(x) x j +#define al(x) x l +#define ami(x) x- +#define bne(x) !=x +#define aob(x) x[ +#define aop(x) x( +#define apl(x) x+ +#define bpu(x) fputc x +#define bqm(x) ?x +#define aqm(x) x? +#define aqu(x) x' +#define ase(x) x; +#define awh(x) x while +#define axo(x) x^ +#define a0(x) x 0 +#define b13(x) 13 x +#define b16(x) 16 x +#define b19(x) 19 x +#define b48(x) 48 x +#define a64(x) x 64 +#define b66(x) 66 x +#define bcb(x) ]x +#define bch(x) char x +#define bcm(x) ,x +#define acm(x) x, +#define bcp(x) )x +#define beq(x) =x +#define bex(x) extern x +#define bi(x) i x +#define bin(x) int x +#define bix(x) index x +#define bj(x) j x +#define bl(x) l x +#define alt(x) x< +#define bma(x) main x +#define bob(x) [x +#define boc(x) {x +#define bop(x) (x +#define bpl(x) +x +#define app(x) x++ +#define bqu(x) 'x +#define bse(x) ;x +#define bst(x) *x + +bma(acp(bop(app(bcp(ai(boc(ase(bch(a16(bl(alt(bob(ai(b66(ase(bcb(a0(bcm(aeq(bst(acb(bj(a64(bse(aob(bin(al(bi(aeq(bse(ai(bex(aop(bch(afo(bst(ase(bix(()))))))))))))))))))))))))))))))))))))))) +bl(ai(bob(aob(bi(al(bcb(aop(beq(apl(b13(a13(bpl(aeq(bop(acb(bl(bob(a32(bi(bpl(apl(b16(bcb(ai(beq(b19(aob(bpl(bop(l)))))))))))))))))))))))))))))) +bpl(acp(b48(acp(asi(bcb(aop(beq(age(bop(aeq(bi(ai(bgt(aop(b12(aop(bqm(awh(b12(ase(bco(acp(bi(acp(bcp(acp(bpl('A')))))))))))))))))))))))))))) +bne(acc(bef(ase(bcp(acp(aso(bpu(acm(ai(bop(aco(bop(acb(bj(al(beq(ami(bix(aj(axo(bop(a16(aob(bl(al(aqm(bcm(acp(acp(i)))))))))))))))))))))))))))))) diff --git a/_src/1990/jaw.c b/_src/1990/jaw.c new file mode 100644 index 0000000..6ab37e1 --- /dev/null +++ b/_src/1990/jaw.c @@ -0,0 +1,22 @@ +#define C char +#define F X,perror("oops"),1 +#define G getchar() +#define I ;if( +#define P putchar +#define Q 256 +#define W ;while( +#define X return 0 +#include +long M,N,c,f,m,o,r,s,w;y(l){o^=l;m+=l+1;f=f*2+l+(f>>31&1);}int +O,S,e,i,k,n,q,t[69001];b(g){k=4 W g>--k*8)&255));w=0;}C D[Q*Q],h +[Q*Q];main(g,V)C**V;{I**V-97)X,a()W G-10)W(g=G)+1&&g-'x')if(g-10){I +432&g<'v')w=w*85+g-33,++k;else{I +g-'z'|k)F;w=0;k=5;}}W G-78)I scanf("%ld%lx E%lx S%lx R%lx ",&M,&N,&c,&s,&r)-5)F +I M){b(g=3-(M-1&3))W g--)y(0);}I(M-N|c-o|s-m|r-f)&4294967295)F;X;}long +g(){C*p I m=S){O=0;S=fread(D,1,n,stdin)*8 I +S<8)X-1;S-=n-1;}p=D+O/8;q=O&7;O+=n;X,(1<<8-q)-1&*p>>q|m&((15>7&1;k&=31 I k>16)F;w=Q +W w--)t[w]=0,h[w]=w;n=8;f=Q+e;i=o=w=g()I o<0)X,1;P(i)W(w=g())+1){I +w==Q&e){W w--)t[w]=0;m=n=8;f=Q I(w=g())<0)X;}c=w +I w>=f)*p++=i,w=o W w>=Q)*p++=h[w],w=t[w];P(i=h[w])W +p>D+Q)P(*--p)I(w=f)<1L< +#define A(a) G a(); +#define B(a) G (*a)(); +#define C(a,b) G a() { printf(b); return X; } +typedef struct F G;A(a)A(b)A(c)A(d)A(e)A(f)A(g)A(h)A(i)A(j)A(k)A(l)A(m)A(n)A( +o)A(p)A(q)A(r)A(s)A(t)A(u)A(v)A(w)A(x)A(y)A(z)A(S)A(N)void Q();struct F{B(a)B +(b)B(c)B(d)B(e)B(f)B(g)B(h)B(i)B(j)B(k)B(l)B(m)B(n)B(o)B(p)B(q)B(r)B(s)B(t)B( +u)B(v)B(w)B(x)B(y)B(z)B(S)B(N)void(*Q)();}X={a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p, +q,r,s,t,u,v,w,x,y,z,S,N,Q};C(a,"z")C(b,"y")C(c,"x")C(d,"w")C(e,"v")C(f,"u")C( +g,"t")C(h,"s")C(i,"r")C(j,"q")C(k,"p")C(l,"o")C(m,"n")C(n,"m")C(o,"l")C(p,"k" +)C(q,"j")C(r,"i")C(s,"h")C(t,"g")C(u,"f")C(v,"e")C(w,"d")C(x,"c")C(y,"b")C(z, +"a")C(S," ")C(N,"\n") void Q(){}main(){X=g().s().v().S().j().f().r().x().p(). +S().y().i().l().d().m().S().u().l().c().S().q().f().n().k().v().w().S().l().e +().v().i().S().g().s().v().S().o().z().a().b().S().w().l().t().N();} diff --git a/_src/1990/scjones.c b/_src/1990/scjones.c new file mode 100644 index 0000000..133a395 --- /dev/null +++ b/_src/1990/scjones.c @@ -0,0 +1,46 @@ +char*a??(??)=??< +"??=include", +"??=include", +"??=define o stdout", +"??=define b break;case", +"??=define s(p)fputs(p,o);", +"??=define c(p)fputc(p,o);", +"void t(p,f)char*p;??':s(??/"???/??/?>??/")b'??(':s(??/"???/??/?(??/")b'??)'", +":s(??/"???/??/?)??/")b'??/??/??/??/':f&&s(??/"???/??/?/??/")", +"s(??/"???/??/?/??/")b'??/??/n':if(f)s(??/"???/??/?/n??/")", +"else case'??/"':if(f)s(??/"???/??/?/??/??/??/"??/")", +"else default:c(*p)??>??>??>main()??;??/",0);for(p=a", +";*p;p++)t(*p,0);exit(!ferror(o)&&", +"!fclose(o)?EXIT_SUCCESS", +":EXIT_FAILURE);", +"/*NOTREACHED*/", +"??>", +0??>; +??=include +??=include +??=define o stdout +??=define b break;case +??=define s(p)fputs(p,o); +??=define c(p)fputc(p,o); +void t(p,f)char*p;??':s("???/?>")b'??(':s("???/?(")b'??)' +:s("???/?)")b'??/??/':f&&s("???/?/") +s("???/?/")b'??/n':if(f)s("???/?/n") +else case'"':if(f)s("???/?/??/"") +else default:c(*p)??>??>??>main()??;",0);for(p=a +;*p;p++)t(*p,0);exit(!ferror(o)&& +!fclose(o)?EXIT_SUCCESS +:EXIT_FAILURE); +/*NOTREACHED*/ +??> diff --git a/_src/1990/stig.c b/_src/1990/stig.c new file mode 100644 index 0000000..f2ad6c7 --- /dev/null +++ b/_src/1990/stig.c @@ -0,0 +1 @@ +c diff --git a/_src/1990/tbr.c b/_src/1990/tbr.c new file mode 100644 index 0000000..44e342e --- /dev/null +++ b/_src/1990/tbr.c @@ -0,0 +1,23 @@ + +#define D ,close( + +char *c,q [512 ],m[ 256 +],*v[ 99], **u, *i[3];int f[2],p;main (){for + (m[m [60]= m[62 ]=32 ]=m[* m=124 [m]= 9]=6; + e(-8) ,gets (1+( c=q) )|| exit (0); r(0,0) + )for( ;*++ c;); }r(t, o){ *i=i [2]= 0;for + (u=v +98 ;m[*--c] ^9;m [*c] &32 ?i[*c + &2]= *u,u- v^98 &&++u: + + 3 )if(!m[*c]){for(*++c=0;!m[*--c];); + * --u= ++c;}u-v^98?strcmp(*u,"cd")?*c?pipe(f),o=f[ + 1 ]: + 4 ,(p=fork())?e(p),o?r(o,0)D o)D*f): + 1 ,wait(0):(o?dup2(*f,0)D*f)D o):*i? + 5 D 0),e(open(*i,0)): + 9 ,t?dup2(t,1)D t):i[ + 2 ]? + 6 D 1),e(creat(i[2],438)): + 5 ,e(execvp(*u,u))):e(chdir(u[1])*2): + 3 ;}e(x){x<0?write(2,"?\n$ "-x/4,2),x+1||exit(1): + 5 ;} diff --git a/_src/1990/tbr.new.c b/_src/1990/tbr.new.c new file mode 100644 index 0000000..17caec4 --- /dev/null +++ b/_src/1990/tbr.new.c @@ -0,0 +1,23 @@ + +#define D ,close( + +char *c,q [512 ],m[ 256 +],*v[ 99], **u, *i[3];int f[2],p;main (){for + (m[m [60]= m[62 ]=32 ]=m[* m=124 [m]= 9]=6; + e(-8) ,gets (1+( c=q) )|| (exit( 0),0); r(0,0) + )for( ;*++ c;); }r(t, o){ *i=i [2]= 0;for + (u=v +98 ;m[*--c] ^9;m [*c] &32 ?i[*c + &2]= *u,u- v^98 &&++u: + + 3 )if(!m[*c]){for(*++c=0;!m[*--c];); + * --u= ++c;}u-v^98?strcmp(*u,"cd")?*c?pipe(f),o=f[ + 1 ]: + 4 ,(p=fork())?e(p),o?r(o,0)D o)D*f): + 1 ,wait(0):(o?dup2(*f,0)D*f)D o):*i? + 5 D 0),e(open(*i,0)): + 9 ,t?dup2(t,1)D t):i[ + 2 ]? + 6 D 1),e(creat(i[2],438)): + 5 ,e(execvp(*u,u))):e(chdir(u[1])*2): + 3 ;}e(x){x<0?write(2,"?\n$ "-x/4,2),x+1||(exit(1),0): + 5 ;} diff --git a/_src/1990/theorem.c b/_src/1990/theorem.c new file mode 100644 index 0000000..f871988 --- /dev/null +++ b/_src/1990/theorem.c @@ -0,0 +1,93 @@ +#include +#include +#define X +#define Y {} +#define C } +#define o { +#undef main +char m[500][99],v[99],R; +int*a,b,n,i,j,W,A; +float Q,G,D,M,T,B,O,U,V,N,y,e(); +P(g,R,u)float*g,R,u;{int c;for(*g=1,c=u;c--;*g*=R);} +X +K(g,R,u)float*g,u;char R; +o +if(R=='+')*g+=u; +if(R=='-')*g-=u; +if(R=='*')*g*=u; +if(R=='/')*g/=u; +if(R=='^')P(g,*g,u); +C +w(g,R,u)float*g,u;char R; +/**/{int b,f;A=atoi(*++a);b=atoi(*++a);while((f=A+b)<15000){printf("%d\n",f);A=b;b=f;}} +main(A,a)int A;char*a[]; +o o +if(!strcmp(*++a,"-r"))S(); +D=atof(*++a); +T=atof(*++a); +B=atof(*++a); +M=atof(*(4+(a-=3))); +C +while(D0) +j=i; +strcpy(v,i+m); +C +for(i=(W/=3)-1;++i='0')&&(*f<='9'))K(&O,R,(float)*f-'0'); +else if(*f=='x')K(&O,R,D); +else if(1)R=*f; +if(1); +return O; +for(j=0;j +#include diff --git a/_src/1990/theorem.new.c b/_src/1990/theorem.new.c new file mode 100644 index 0000000..c8b665e --- /dev/null +++ b/_src/1990/theorem.new.c @@ -0,0 +1,95 @@ +#include +#include +#include +#define X +#define Y {} +#define C } +#define o { +#undef main +char m[500][99],v[99],R; +int*a,b,n,i,j,W,A; +float Q,G,D,M,T,B,O,U,V,N,y,e(); +P(g,R,u)float*g,R,u;{int c;for(*g=1,c=u;c--;*g*=R);} +X +K(g,R,u)float*g,u;char R; +o +if(R=='+')*g+=u; +if(R=='-')*g-=u; +if(R=='*')*g*=u; +if(R=='/')*g/=u; +if(R=='^')P(g,*g,u); +C +w(g,R,u)float*g,u;char R; +/**/{int b,f;A=atoi(*++a);b=atoi(*++a);while((f=A+b)<15000){printf("%d\n",f);A=b;b=f;}} +main(A,a)int A;char*a[]; +o o +if(!strcmp(*++a,"-r"))S(); +D=atof(*++a); +T=atof(*++a); +B=atof(*++a); +M=atof(*(4+(a-=3))); +C +while(D0) +j=i; +strcpy(v,i+m); +C +for(i=(W/=3)-1;++i='0')&&(*f<='9'))K(&O,R,(float)*f-'0'); +else if(*f=='x')K(&O,R,D); +else if(1)R=*f; +if(1); +return O; +for(j=0;j +#include +#include diff --git a/_src/1990/westley.c b/_src/1990/westley.c new file mode 100644 index 0000000..5d63757 --- /dev/null +++ b/_src/1990/westley.c @@ -0,0 +1,107 @@ +char*lie; + + double time, me= !0XFACE, + + not; int rested, get, out; + + main(ly, die) char ly, **die ;{ + + signed char lotte, + + +dear; (char)lotte--; + + for(get= !me;; not){ + + 1 - out & out ;lie;{ + + char lotte, my= dear, + + **let= !!me *!not+ ++die; + + (char*)(lie= + + +"The gloves are OFF this time, I detest you, snot\n\0sed GEEK!"); + + do {not= *lie++ & 0xF00L* !me; + + #define love (char*)lie - + + love 1s *!(not= atoi(let + + [get -me? + + (char)lotte- + + +(char)lotte: my- *love - + + 'I' - *love - 'U' - + + 'I' - (long) - 4 - 'U' ])- !! + + (time =out= 'a'));} while( my - dear + + && 'I'-1l -get- 'a'); break;}} + + (char)*lie++; + + +(char)*lie++, (char)*lie++; hell:0, (char)*lie; + + get *out* (short)ly -0-'R'- get- 'a'^rested; + + do {auto*eroticism, + + that; puts(*( out + + - 'c' + +-('P'-'S') +die+ -2 ));}while(!"you're at it"); + + +for (*((char*)&lotte)^= + + (char)lotte; (love ly) [(char)++lotte+ + + !!0xBABE];){ if ('I' -lie[ 2 +(char)lotte]){ 'I'-1l ***die; } + + else{ if ('I' * get *out* ('I'-1l **die[ 2 ])) *((char*)&lotte) -= + + '4' - ('I'-1l); not; for(get=! + + +get; !out; (char)*lie & 0xD0- !not) return!! + + (char)lotte;} + + +(char)lotte; + + do{ not* putchar(lie [out + + *!not* !!me +(char)lotte]); + + not; for(;!'a';);}while( + + love (char*)lie);{ + + +register this; switch( (char)lie + + [(char)lotte] -1s *!out) { + + char*les, get= 0xFF, my; case' ': + + *((char*)&lotte) += 15; !not +(char)*lie*'s'; + + this +1s+ not; default: 0xF +(char*)lie;}}} + + get - !out; + + if (not--) + + goto hell; + + exit( (char)lotte);} diff --git a/_src/1990/westley.new.c b/_src/1990/westley.new.c new file mode 100644 index 0000000..70f7876 --- /dev/null +++ b/_src/1990/westley.new.c @@ -0,0 +1,107 @@ +char*lie; + + double time, me= !0XFACE, + + not; int rested, get, out; + + main(ly, die) char ly, **die ;{ + + signed char lotte, + + +dear; (char)lotte--; + + for(get= !me;; not){ + + 1 - out & out ;lie;{ + + char lotte, my= dear, + + **let= !!me *!not+ ++die; + + (char*)(lie= + + +"The gloves are OFF this time, I detest you, snot\n\0sed GEEK!"); + + do {not= *lie++ & 0xF00L* !me; + + #define love (char*)lie - + + love 1 *!(not= atoi(let + + [get -me? + + (char)lotte- + + +(char)lotte: my- *love - + + 'I' - *love - 'U' - + + 'I' - (long) - 4 - 'U' ])- !! + + (time =out= 'a'));} while( my - dear + + && 'I'-1l -get- 'a'); break;}} + + (char)*lie++; + + +(char)*lie++, (char)*lie++; hell:0, (char)*lie; + + get *out* (short)ly -0-'R'- get- 'a'^rested; + + do {auto*eroticism, + + that; puts(*( out + + - 'c' + +-('P'-'S') +die+ -2 ));}while(!"you're at it"); + + +for (*((char*)&lotte)^= + + (char)lotte; (love ly) [(char)++lotte+ + + !!0xBABE];){ if ('I' -lie[ 2 +(char)lotte]){ 'I'-1l ***die; } + + else{ if ('I' * get *out* ('I'-1l **die[ 2 ])) *((char*)&lotte) -= + + '4' - ('I'-1l); not; for(get=! + + +get; !out; (char)*lie & 0xD0- !not) return!! + + (char)lotte;} + + +(char)lotte; + + do{ not* putchar(lie [out + + *!not* !!me +(char)lotte]); + + not; for(;!'a';);}while( + + love (char*)lie);{ + + +register this; switch( (char)lie + + [(char)lotte] -1 *!out) { + + char*les, get= 0xFF, my; case' ': + + *((char*)&lotte) += 15; !not +(char)*lie*'s'; + + this +1+ not; default: 0xF +(char*)lie;}}} + + get - !out; + + if (not--) + + goto hell; + + exit( (char)lotte);} diff --git a/index.md b/index.md index fc2d004..b85b120 100644 --- a/index.md +++ b/index.md @@ -15,6 +15,7 @@ IOCCCをよく知らない人は、まず[このサイトについて]({{ site.b 更新履歴: +* 2021/01/30: [IOCCC 1990]({{ site.baseurl }}{% link 1990/index.md %})の解説を公開しました。 * 2021/01/23: [IOCCC 1989]({{ site.baseurl }}{% link 1989/index.md %})の解説を公開しました。 * 2021/01/16: [IOCCC 1988]({{ site.baseurl }}{% link 1988/index.md %})の解説を公開しました。 * 2021/01/09: [IOCCC 1987]({{ site.baseurl }}{% link 1987/index.md %})の解説を公開しました。 diff --git a/patches/1990-cmills.patch b/patches/1990-cmills.patch new file mode 100644 index 0000000..f2d0275 --- /dev/null +++ b/patches/1990-cmills.patch @@ -0,0 +1,11 @@ +--- cmills.c ++++ cmills.c +@@ -6,7 +6,7 @@ + #define H(v,g)v=h(v,*g++= *r++),*g=0; + #define B(n)b(l,n),(V)printf(l + V +-exit();char*g,c[M],d[N],q[N],p[N],*e,*r=d+N,l[M],*t="??",*k,*m="DEATHISDSev2oinpohae3ttsluuln4a?uibfe 5l\0rtlfrb6 ?a?el:e7$!n\0?e t8%ccp\0.%s9deelc.s T.@?-t.\t',>)O(K,V,'$',<=,'!',>=) + O(V,W,'+',+,'-',-)O(W,Y,'*',*,'/',/)Y(){int o;_*p=='-'?p++,-Y():*p>='0'&&*p<= + '9'?strtol(p,&p,0):*p=='('?p++,o=S(),p++,o:P[*p++];} diff --git a/patches/1990-dg.patch b/patches/1990-dg.patch new file mode 100644 index 0000000..f24c06a --- /dev/null +++ b/patches/1990-dg.patch @@ -0,0 +1,132 @@ +--- dg.c ++++ dg.c +@@ -2,68 +2,68 @@ + + #define d define + +-#d b12(x) 12 x +-#d a13(x) x 13 +-#d a16(x) x 16 +-#d a32(x) x 32 +-#d acb(x) x] +-#d acc(x) x} +-#d aco(x) x: +-#d bco(x) :x +-#d acp(x) x) +-#d bef(x) EOF x +-#d aeq(x) x= +-#d afo(x) x for +-#d age(x) x fgetc +-#d asi(x) x stdin +-#d aso(x) x stdout +-#d bgt(x) >x +-#d ai(x) x i +-#d aj(x) x j +-#d al(x) x l +-#d ami(x) x- +-#d bne(x) !=x +-#d aob(x) x[ +-#d aop(x) x( +-#d apl(x) x+ +-#d bpu(x) fputc x +-#d bqm(x) ?x +-#d aqm(x) x? +-#d aqu(x) x' +-#d ase(x) x; +-#d awh(x) x while +-#d axo(x) x^ +-#d a0(x) x 0 +-#d b13(x) 13 x +-#d b16(x) 16 x +-#d b19(x) 19 x +-#d b48(x) 48 x +-#d a64(x) x 64 +-#d b66(x) 66 x +-#d bcb(x) ]x +-#d bch(x) char x +-#d bcm(x) ,x +-#d acm(x) x, +-#d bcp(x) )x +-#d beq(x) =x +-#d bex(x) extern x +-#d bi(x) i x +-#d bin(x) int x +-#d bix(x) index x +-#d bj(x) j x +-#d bl(x) l x +-#d alt(x) x< +-#d bma(x) main x +-#d bob(x) [x +-#d boc(x) {x +-#d bop(x) (x +-#d bpl(x) +x +-#d app(x) x++ +-#d bqu(x) 'x +-#d bse(x) ;x +-#d bst(x) *x ++#define b12(x) 12 x ++#define a13(x) x 13 ++#define a16(x) x 16 ++#define a32(x) x 32 ++#define acb(x) x] ++#define acc(x) x} ++#define aco(x) x: ++#define bco(x) :x ++#define acp(x) x) ++#define bef(x) EOF x ++#define aeq(x) x= ++#define afo(x) x for ++#define age(x) x fgetc ++#define asi(x) x stdin ++#define aso(x) x stdout ++#define bgt(x) >x ++#define ai(x) x i ++#define aj(x) x j ++#define al(x) x l ++#define ami(x) x- ++#define bne(x) !=x ++#define aob(x) x[ ++#define aop(x) x( ++#define apl(x) x+ ++#define bpu(x) fputc x ++#define bqm(x) ?x ++#define aqm(x) x? ++#define aqu(x) x' ++#define ase(x) x; ++#define awh(x) x while ++#define axo(x) x^ ++#define a0(x) x 0 ++#define b13(x) 13 x ++#define b16(x) 16 x ++#define b19(x) 19 x ++#define b48(x) 48 x ++#define a64(x) x 64 ++#define b66(x) 66 x ++#define bcb(x) ]x ++#define bch(x) char x ++#define bcm(x) ,x ++#define acm(x) x, ++#define bcp(x) )x ++#define beq(x) =x ++#define bex(x) extern x ++#define bi(x) i x ++#define bin(x) int x ++#define bix(x) index x ++#define bj(x) j x ++#define bl(x) l x ++#define alt(x) x< ++#define bma(x) main x ++#define bob(x) [x ++#define boc(x) {x ++#define bop(x) (x ++#define bpl(x) +x ++#define app(x) x++ ++#define bqu(x) 'x ++#define bse(x) ;x ++#define bst(x) *x + + bma(acp(bop(app(bcp(ai(boc(ase(bch(a16(bl(alt(bob(ai(b66(ase(bcb(a0(bcm(aeq(bst(acb(bj(a64(bse(aob(bin(al(bi(aeq(bse(ai(bex(aop(bch(afo(bst(ase(bix(()))))))))))))))))))))))))))))))))))))))) + bl(ai(bob(aob(bi(al(bcb(aop(beq(apl(b13(a13(bpl(aeq(bop(acb(bl(bob(a32(bi(bpl(apl(b16(bcb(ai(beq(b19(aob(bpl(bop(l)))))))))))))))))))))))))))))) +-bpl(acp(b48(acp(asi(bcb(aop(beq(age(bop(aeq(bi(ai(bgt(aop(b12(aop(bqm(awh(b12(ase(bco(acp(bi(acp(bcp(acp(bpl(aqu(bqu(A)))))))))))))))))))))))))))))) ++bpl(acp(b48(acp(asi(bcb(aop(beq(age(bop(aeq(bi(ai(bgt(aop(b12(aop(bqm(awh(b12(ase(bco(acp(bi(acp(bcp(acp(bpl('A')))))))))))))))))))))))))))) + bne(acc(bef(ase(bcp(acp(aso(bpu(acm(ai(bop(aco(bop(acb(bj(al(beq(ami(bix(aj(axo(bop(a16(aob(bl(al(aqm(bcm(acp(acp(i)))))))))))))))))))))))))))))) diff --git a/patches/1990-tbr.patch b/patches/1990-tbr.patch new file mode 100644 index 0000000..88a7545 --- /dev/null +++ b/patches/1990-tbr.patch @@ -0,0 +1,18 @@ +--- tbr.c ++++ tbr.c +@@ -4,7 +4,7 @@ + char *c,q [512 ],m[ 256 + ],*v[ 99], **u, *i[3];int f[2],p;main (){for + (m[m [60]= m[62 ]=32 ]=m[* m=124 [m]= 9]=6; +- e(-8) ,gets (1+( c=q) )|| exit (0); r(0,0) ++ e(-8) ,gets (1+( c=q) )|| (exit( 0),0); r(0,0) + )for( ;*++ c;); }r(t, o){ *i=i [2]= 0;for + (u=v +98 ;m[*--c] ^9;m [*c] &32 ?i[*c + &2]= *u,u- v^98 &&++u: +@@ -19,5 +19,5 @@ + 2 ]? + 6 D 1),e(creat(i[2],438)): + 5 ,e(execvp(*u,u))):e(chdir(u[1])*2): +- 3 ;}e(x){x<0?write(2,"?\n$ "-x/4,2),x+1||exit(1): ++ 3 ;}e(x){x<0?write(2,"?\n$ "-x/4,2),x+1||(exit(1),0): + 5 ;} diff --git a/patches/1990-theorem.patch b/patches/1990-theorem.patch new file mode 100644 index 0000000..9e935d9 --- /dev/null +++ b/patches/1990-theorem.patch @@ -0,0 +1,14 @@ +--- theorem.c ++++ theorem.c +@@ -1,4 +1,5 @@ + #include ++#include + #include + #define X + #define Y {} +@@ -90,4 +91,5 @@ + #define o } + #define C { + #include ++#include + #include diff --git a/patches/1990-westley.patch b/patches/1990-westley.patch new file mode 100644 index 0000000..5a765e3 --- /dev/null +++ b/patches/1990-westley.patch @@ -0,0 +1,27 @@ +--- westley.c ++++ westley.c +@@ -28,7 +28,7 @@ + + #define love (char*)lie - + +- love 1s *!(not= atoi(let ++ love 1 *!(not= atoi(let + + [get -me? + +@@ -90,13 +90,13 @@ + + register this; switch( (char)lie + +- [(char)lotte] -1s *!out) { ++ [(char)lotte] -1 *!out) { + + char*les, get= 0xFF, my; case' ': + + *((char*)&lotte) += 15; !not +(char)*lie*'s'; + +- this +1s+ not; default: 0xF +(char*)lie;}}} ++ this +1+ not; default: 0xF +(char*)lie;}}} + + get - !out; +