Normally this kind of thing would be absolutely ripe for abuse, but with the guardrails in place for the mainstream SOTA models, it might actually be okay. Maybe I'll be proven wrong.
For #14, some of us went a little nuts optimizing the dynamic programming solution down from months/OOM to milliseconds, and going past the original suggested problem size of a few hundred to a maximum problem size of 133 million: https://gwern.net/problem-14
It defines a new infix data constructor. So if `it` and `ct` are values of type `ITerm` and `CTerm` respectively, `it :@: ct` is a value of type `ITerm`. (It could have been written using a prefix operator like `ITerm`'s other data constructors.)