Best tool to reveal holes

穴を明らかにする最高のツール

受賞者:Yusuke Endoh

引用元:https://www.ioccc.org/2018/endoh1/prog.c

審査員・作者による説明:https://www.ioccc.org/2018/endoh1/hint.html

動作

テキストをアニメGIFにするツール。 そのうち全体がブラックアウトするが、穴(線で囲まれている部分)になっている部分のみ白く残る。

サンプルのテキスト。

$ cat invisible.txt
TELUGU INEFFECTIVENESS SHEETS CYSTIC SHIFTINESS FLESHIEST UNSUCCESSFULLY WEIGHTLESSNESS FLESH HUFFIEST
LIFE FLOORBOARD CHESSBOARD APPROACHES CARDBOARD TINY POPPA PAROXYSMS ARBOR BARBARIC JARROD DOODAD SLIT
WUSS BARODA PROBATE CORPORA PAPOOSE WOODARD PARADE SEABOARD BROAD SHIPBOARD PARADIGM ABOARD BOARD NIGH
LIMY ORDAIN MBABANE UPDRAFTS SLUTS FERRARI TERRORS INROAD ENTRAPPING PROPHETESSES LIKEN CAPRA NEGLECTS
INESCAPABLY HINES SKEDADDLES FUNNY GEARBOX JELLYFISH PROPS STARDOM TEAROOM ENTHUSING KICKAPOO JUSTNESS
GUNS PRADO BRAD MICK DROOP ADORABLE CARBOYS MCKINNEY PRADA ARDOR SIGNBOARD BARBRA LEVITT BORON WISTFUL
NIFTY ERROR QADDAFI SAPPORO RADAR STEPDAD EYEFULS CLIPBOARD PARAFFIN ABROAD PROPONENT ESTRADA IMMUNITY
INSENSITIVE VAPOR GUMDROP MIXTEC HETERODOX SEEKING STRADDLES BARON THROBBING WILTING SCHIAPARELLI TUMS
UNMEMORABLE NARROWLY ARABS SECS KLEE POOP TEMPORAL FEDORA STUBBORN SCRAPPIEST SEVENTHS UNBARRING TYING
ZINC BAOBAB BROADEST DOBRO BARROOM SCABBARD ODDBALLS BOOBING PROPELS BROOD RAPPROCHEMENT ADORNS SWEETS
GENUS CORROBORATES TEARDROP PARBOILING BOARDROOM INEXORABLY HADDOCK CORDOBA PADDOCKS VIVIPAROUS HUGEST
TEXT SLUM THICKLY FUZZIEST JUNKETING SINGEING INSUFFICIENTLY CIVET INSENSITIVITY LESSENS SINE NICETIES

$ gcc -o prog prog.c

$ ./prog < invisible.txt > invisible.gif
invisible.gif
図:invisible.gif

アニメーションするまで5秒くらい待つこと。

図:作者によるデモ動画(引用元:https://www.youtube.com/watch?v=-Tq_npwqnc8

解説

コードは、”2018”というアスキーアートの上に、”IOCCC”というメッセージが隠されるものになっている。 “IOCCC”の位置には、極力フォントに穴がある文字(#$%&04689@ABDOPQRabdegopq)を置き、それ以外の位置ではなるべくこれらの文字を使わないようにする、という制約で書かれている。

他のテキストも付属している。 golem.txtはゴーレムを壊すときのネタ。 ゴーレムの体にはどこかに”emeth/אמת”(ヘブライ語で真理)という文字があり、eを消して”meth/מת”(死)とすれば壊せる、というもの。

$ ./prog < golem.txt > golem.gif
golem.gif
図:golem.gif

smily.txtは笑顔のマークに怒りの顔が隠されている。

$ ./prog < smily.txt > smily.gif
smily.gif
図:smily.gif

プログラム本体にもメッセージが隠されている。

$ ./prog < prog.c > prog.gif
prog.gif
図:prog.gif