引用元:https://www.ioccc.org/2019/mills/prog.c
審査員・作者による説明:https://www.ioccc.org/2019/mills/hint.html
動作
回帰型ニューラルネットワーク(RNN)で、学習した文書っぽい文書を自動生成する。
LSTMやGRUなど、RNNの派生版をマクロで生成できる。
次は2段階LSTMの例らしい。
$ gcc -DRS=.15 -DTR=.95 -DLR=.002 -DLD=.97 -DLE=10 -DCL=5 -DB1=.9 -DB2=.999 -DEP=1e-8 -DWD=8e-5 -DDI=100 -DSL=200 -DN=50 -DTP=1 -DPF='"cp%02d_%.3f"' -DHS=128 -DBK='cp = I(HS), hp = I(HS), t1 = L(HS, x), f = S(A(t1, L(HS, hp))), t2 = L(HS, x), i = S(A(t2, L(HS, hp))), t3 = L(HS, x), cn = T(A(t3, L(HS, hp))), t4 = M(f, cp), c = C(cp, A(t4, M(i, cn))), t5 = L(HS, x), o = S(A(t5, L(HS, hp))), h = C(hp, M(o, T(c))), y = h' -DNW='x = I(n), y = L(n, MD(MD(x)))' -o lstm2 prog.c -lm
IOCCCのルールやガイドラインっぽいテキストを生成する例。
$ ./lstm2 < IOCCC-Rules-Guidelines.cp98_0.175 | head -n 30
compiler octet to make sime, pre, and then Bird and interesting the following address:
| q.2018@ioccc.org (for questions only!)
| You must use such in order to needed to confusiated to postions of the same program, one that is a compact blob
of code, and the other that is formatted more like a typical C
program, we tend to favor the second version. Of course, a third
version of the same program that is formatted in an interesting
and/or obfuscated way, would definitely win over the first two!
Remember, you can ters are portable and usable from within a master
* reading the "how to build" information and forming a Makefile
* reading prog.c, the C source
* reviewing the "remarks" information
* briefly looking any any supplied data files
* passing the source thru the C pre-processor
skipping over any #include files
* compiling/building the source
* running the program
* Doing other things that only IOCCC judges know about :-)
In later rounds, other remarks file.
People who are considering to just use some complex mathematical
function or state machine to spell out something such as "hello,
world!" really really, and we do mean really, do need to be more creative.
Ultra-obfuscated programs are, in some cases, easier to
deobfuscate than subtly-obfuscated programs. Consider using
misleading or subtle tricks layered on top of or under an
appropriate level of obfuscation. A clean looking program with
解説
OMLET(Obfuscated Machine Learning Environment Toolkit)という名前をついている。
詳しいことは見ていない。
コード形状が何を表現しているのかもわかっていない。
hint.textはそれなりに長いが、コードについての説明はなさそう。