The 2020 winners are hinted it, but the source code is not there,
nor are the hints. Someone could look into the HTML and
see what was commented out, but that is not a problem because
WHO won is known and the name of their AWARD is known already.
Moreover a number of the winners have talked about what their
entirs do, so the commented out spoiler text is not a bit problem.
One will find HTML commented out with:
<!-- XXX remove when 2020 is ready
2020 links here
XXX remove when 2020 is ready -->
The "XXX remove when 2020 is ready" string is found at the
start and end comment blocks. Again, soneone could read
what was commented out, but that is OK since most of that
information is known or can be known. The following files
have such HTML comment blocks in them.
./winners.html
./years-spoiler.html
./years.html
In addition, ./all/summary.txt was modified to not
include the 2020 entries for the momemt.
The 2020 winner code AND write-ups are NOT part of this set.
p.s. The all/all.tar.bz2 does not contain the 2020 source code (yet?).
101 lines
6.0 KiB
Haskell
101 lines
6.0 KiB
Haskell
-- The output of a certain stage of our compiler when run on its source,
|
|
-- with these differences:
|
|
--
|
|
-- * Definitions of the basic combinators so this file compiles.
|
|
-- (GHC won't like this file though, as the Scott encodings are unrolled,
|
|
-- which messes up the types.)
|
|
-- * A few syntax-based rewrites, e.g. Y(Kx) -> x.
|
|
-- * Inlined a few functions to shrink the code further.
|
|
-- * The original compiler produced a list of numbers and relied on the C
|
|
-- program to print them as a comma-separated list along with a certain header
|
|
-- and footer. This version of the compiler does all this itself.
|
|
--
|
|
-- Studying the code below may partially spoil this entry; please avert your
|
|
-- eyes if you want to honestly reverse-engineer the compiler!
|
|
|
|
y x = x(y x);
|
|
s x y z = x z(y z);
|
|
b x y z = x(y z);
|
|
c x y z = x z y;
|
|
r x y z = y z x;
|
|
t x y = y x;
|
|
k x _ = x;
|
|
i x = x;
|
|
|
|
f0 = b c t;
|
|
f1 = y(b(b(s(b c t)))(s(b b(b c(b b)))));
|
|
f2 = b c(r i(b f1(b(b(c b)) c)));
|
|
f3 = b(c(t b)) f2;
|
|
f4 = t k;
|
|
f5 = b(r(k i))(s(b s (<=))(c (<=)));
|
|
f6 = y(b(c(b s(b(b s)(b(b(b s))(r(b(r(b k k))(b b))(b b(b b b)))))))(b(c(b b(b s(b(b b)(b b)))))(b(r i)(b(b s)(b(b(b c))(b(b(b(b c)))(b(b(b(b(b c))))(b(b(b(b(b(b c)))))(b(b(b(c(b b(b c(b(b b) f5))))))(b(b c)(b(b(b c))(b c(b c)))))))))))));
|
|
f7 = c(b f1(b (:))) k;
|
|
f8 = b c(b(b c)(b(b f1)(b c(c f5))));
|
|
f9 = b k t;
|
|
f10 = b(b(b k))(b(b(b k))(b(b(b k))(b(b(b k))(b c t))));
|
|
f11 = b k(b(b k)(b(b k)(b(b k) t)));
|
|
f12 = b k(b k(b(b k)(b(b k) t)));
|
|
f13 = b k(b k(b k(b(b k) t)));
|
|
f14 = b(b k)(b(b k)(b(b k)(b(b k)(b c t))));
|
|
f15 = b k(b k(b k k));
|
|
f16 = c(t k);
|
|
f17 = b f16(b f9);
|
|
f18 = c(f1 (:));
|
|
f19 = f1 f18 k;
|
|
f20 = f5 0;
|
|
f21 = f11 8;
|
|
f22 = f11 9;
|
|
f23 = f11 6;
|
|
f24 = f11 5;
|
|
f25 = f11 3;
|
|
f26 = f11 2;
|
|
f27 = b(b(b f12))(r f11 b);
|
|
f28 = b(b(b(b f12)))(s(b b b)(r f11 b));
|
|
f29 = y(b(b(r b))(s(b c(b(b s)(s(b c(b(b s)(s(b s(b(b s)(b(c b)(b(r b)(s(b c(b(c(r(b f12(b f11(f14 f23)))(t(f12(f11(f14(f14 f26 f22) f22))))))(r(f14 f26 f22) f27)))(r f23 f27))))))(b(b(b(r b)))(s(b b(b c(b(b c)(b(c(b s(r(b(b f11) f14)(b s(r(b f12 f11) b)))))(r(f14 f24)(b b f27))))))(b(b f13)))))))(b(b(r b))(s(b c(b(b s)(s(b c(b(b s)(s(b c(b(b s)(b(c b)(b(r(f11 f22))(r f26 f28)))))(b c(r(f14(f11 4))(b b f27))))))(r f26 f28))))(r f25 f28))))))(b(b(r b))(s(b c(b(b s)(s(b c(b(b s)(b(s(b s(r f12 b)))(b(b(b k))(b(b(b f13)) c)))))(r f24 f28))))(b(b f13))))));
|
|
f30 = b(b(r b(r b(r b(r i(t b)))))(y(s(b c(b(r f11)(s(b c(b(c(t f15))(b f13)))(b(r b)(b(r(f29(f11 f21)))(b(r i)(b(r(b f11(f14 f21)))(r(f11 f22)))))))))(s(b c(b(b b)(b f29))) i))))(y(s(b s(b(b c)(r(b(r i)(r(b f13 f13)(b s(c(r k(b f1(b(r(f17 f11))(b(b b)(b(r(f9 f15))(c f6))))))))))(b s(b(b c)(b(b(r(b f13 f12)))(b(b(r(b f13 f11)))(b(b t)(b(b(b(b f12)))(r(c (:))(b b b)))))))))))(s(b s(b(b c)(b(b(b b))(b(b f14))))) i)) k);
|
|
f31 = b(b f9) f0;
|
|
f32 = c(b b(b f16(b t(c(b b(b f17(b t(b f0))))))));
|
|
f33 = b f32 f31;
|
|
f34 = b(b(r f9)) s;
|
|
f35 = b f32(f33(k i));
|
|
f36 = y(b(r(f31 k))(b(b f34)(s(b f32(f33 (:))))));
|
|
f37 = s(b f32(f33 (:))) f36;
|
|
f38 = b(f0 k)(b(b(r k))(r f31(b s(b b))));
|
|
f39 = b(b(b c))(b(c(b s(b(b(b s(b b))) (<=))))(c (<=)));
|
|
f40 = b f38 f5;
|
|
f41 = b f32(f33 k);
|
|
f42 = r(c f41)(b b(b b f35));
|
|
f43 = b b(b f16(b(r k)(r f9(b s(r f4 b)))));
|
|
f44 = c(b f43 f6);
|
|
f45 = f37(f38(c f8 [58,33,35,36,37,38,42,43,46,47,60,61,62,63,64,92,94,124,45,126]));
|
|
f46 = f36(f34(f38(r [32,10] f8))(f35(f35(f44 f45 [45,45])(f36(f38(b c(f5 10)))))(f40 10)));
|
|
f47 = r f46 f41;
|
|
f48 = b f47 f40;
|
|
f49 = b(r(f31 k))(b(b f34)(s(b b(b f32(f32(f31 (:)))))(b(b f36)(c(b f35 f48)))));
|
|
f50 = b(f33 f12)(b(f34(f35(f40 92)(f34(f38(r [92,39,34] f8))(f33(k 10)(f40 110)))))(b f38(b(b c) f5)));
|
|
f51 = f38(f39 47 58);
|
|
f52 = b f14 f13;
|
|
f53 = f33(f1(b f14(f52 [58])) f21);
|
|
f54 = r f48(b b f42);
|
|
f55 = b f54 f48;
|
|
f56 = f55 91 93;
|
|
f57 = f38(s(b(b s(b b))(s(b(b s(b b))(f39 96 123))(f39 64 91)))(f5 95));
|
|
f58 = [111,102];
|
|
f59 = f47(f32(f33 (:) f57)(f36(f34(f34 f57 f51)(f40 39))));
|
|
f60 = f43(b c(f6 f58)) f59;
|
|
f61 = f47(f34 f45(f55 96 96 f60));
|
|
f62 = f55 40 41;
|
|
f63 = f34 f60(f62 f61);
|
|
f64 = f1 f10;
|
|
f65 = b(f34(f33 f13 f63))(b f53(b f56(r 44 f49)));
|
|
f66 = f44 f61 [45,62];
|
|
f67 = b(f55 123 125)(r 59 f49);
|
|
f68 = f44 f59;
|
|
f69 = f37 f60;
|
|
f70 = b(f32(f33(s(b b f0)(b(b f30)(b(b(f52 k)) f10))) f63))(b(f32(f33(c f64)(f36 f60)))(f35(f48 61)));
|
|
f71 = b(f33(f3 f14))(b f37(s(b f34(r(f34(f34(f54(f40 39) 39(f50 39))(f53(f54(f40 34) 34(f36(f50 34)))))(f33 f12(f33(f2(b(r 48)(b(b (-))(r i(b b(b (+)(r 10 (*))))))) 0)(f47(f37 f51)))))(b f34(s(b f34(s(b f34(s(b f34(s(b f32(b(f33(c(f1(c(b t(b(b f14)(c f10)))))))(b(f42(f68 [108,101,116])(f68 [105,110]))(b f67 f70)))) i))(s(b f32(b(f33(b(b(f3 f14)) (:)))(f42(f68 [99,97,115,101])(f68 f58))))(b f67(s(b f35 f65)(b(f32(f33(c f64)(f36 f60)))(f35 f66)))))))(f32(f33(c(f1 f10))(f42(f48 92) f66 f69)))))(b f62(s(b f34(r(f34(f33 f52 f61)(f31 i))(b f32(f33 t))))(f32(f33(b f14(b(f14 f25) f13)) f61)))))))) f65));
|
|
f72 = b(b(t(k i)))(r(f0 0 k)(b f2(b c(b(b t)(b(b(s(b b(b f0((+) 1)))))(b(b (:))))))));
|
|
f73 = r(b(b(b t))(b(b(b(s(b b f0))))(b(b(c(b b(b b f0))))(b(b(c(b b(b f0(r 2 (+))))))(b(c(b b (:))) (:))))))(b b b);
|
|
f74 = b f4(r i(t b));
|
|
f75 = r [47,42,10](b f18(b(f18 [35,100,101,102,105,110,101,32,120,32,92,10])(b(b(b f19) f7(r [44](s(r((:) 48) f20)(y(b(s(r i f20))(r(b (:)(b((+) 48)(r 10(s(b b (-))(r i(b s(b(b (*)) (/))))))))(b s(b(b b)(r(r 10 (/)) b)))))))))(r(b t(b(c(b b (:)))(r(b(f18(y(b(s(b b(r k f20)))(b(b(s (:)))(r(r 1 (-)) b))) 22 0))(f2(c (:)) k))(b b(b (:)(b(t(k i))(f1 k b)))))))(b(b(f2(b t(r(b(b t)(b(b(b f0))(b(b (:)) f0)))(b b(b c(y(b(s(b c(s(b c(s(b c(b(c(t b))(c f0)))(r 1 f73)))(s(b b(c f0))(b(c(r 9(b f1(b(c b)(b c(b(b c) f6)))))) f4)))))(s(b c(b(b c)(b(b b))))(b(r(b c(c f73)))(b(b b)(b(b c) c))))))))))(f0(f72(r((+) 16)(b b f0))((:) k(f74(f36 f61 [58,32,60,61,32,42,32,43,32,45,32,47]))))(f0 24 k))) f74)(f35 f46(f33 f19(f49(f34(f35(f54(f68 [100,97,116,97]) 61 f69)(f33(s(b f7(b t(b(s(b b f0))(b(b(b f30))(b(c(b s(b(b f64)(b(f2(r f13(b b f14))) f13))))(b(c f18)(f7 f4))))))) i)(f49(f32(f33 f0 f63)(f33(f72(k(c (:) k)))(f36(f34(f34(f62 f69)(f56 f69)) f60)))) 124)))(f33(c (:) k)(f70(y(s(b f32(b(f33(f2 t)) f71))(b f36(b(f32(f33(b c(b(b f14) f52)) f61)) f71))))))) 59))))))));
|