もっとも不合理
xxxxxxxxxx
#define q [v+a]
#define c b[1]
#define O 1 q
#define o 0 q
#define r(v,a\
)v<0&&( v*=-1, a*=-1);
#define p(v,m, s,w)*c==*#v?2 q\
<m?(c++ ,d=1,3 q=0,5 q=m,main\
(a+3,b) ,o=o*s q,O=O* w q):0:
static d,v[99 ];main (int a,
char**b ){d=7; if(*c?! (p(+,3
,4 q+O* 3,4)p( -,(o?3
:(O=1,6 )),4 q -O*3,4)
p(*,4,3 ,4)p(/ ,5,4,3)
p((),d, 0+3,0+ 04)*c==
')'?2 q <02?(c ++,0):0
:(o=012 *o+*c- '0',c++
,O=1)): 2 q?3- 2:printf(
"%d/%d" "\n",o ,O))return
1;d=a,r (o,d)r (O,d)3 q
=o<O?(4 q=o,O) :(4 q=O,
o);r(d, o)a+=3;O?
1:(O=1,2
q=1);while
(2 q=o%1 q)a++;v[d]/=O;d[
v+1]/=O;return main(d,b);}
引用元:https://www.ioccc.org/2006/hamre/hamre.c
審査員・作者による説明:https://www.ioccc.org/2006/hamre/hint.text
有理数をサポートした電卓。
$ gcc -o hamre hamre.c
$ ./hamre 1-1/3
2/3
$ ./hamre '-1+4/3*(2+1/(3/2*(7/2-7/3+1/6)))/2'
2/3
四則演算とカッコをサポートしている、有理数の計算をするツール。
コード形状は”1/2”。 IOCCCの作品はマジックナンバーを使いすぎる傾向があるので、このプログラムでは7より大きいマジックナンバーは使わないように心がけたとのこと。
賞名のirrationalは、不合理という意味と、無理数(irrational number)という意味をかけている。