A lot of the award titles that had more than one word capitalised were changed to just one word capitalised, the first. Some were changed to have multiple words capitalised. This happened when it was something like '... prize' or '... award'. An exception to this is 2020/ferguson1: 'Don't tread on me award'. This is because I am not quite sure if I like 'Don't Tread On Me Award' or if it should be 'Don't Tread on Me Award' (probably not that). For some like 'Grand Prize' or 'Bill Gates Award' it's simple but I'm not so sure for my Snake entry of 2020. I will try changing it and comparing it side-by-side to see which looks nicest. This commit should make it easier to update the form of the award titles in that they should all be consistent (or more consistent if not completely) though it should be noted that the macOS Numbers application (spreadsheet) is case-insensitive. A reason I did not change 'Don't tread on me award' to 'Don't Tread On Me Award', yet, besides the above reasons, is that it's a longer title and I am not sure how I like that many words capitalised. Still it's a title of a slogan/whatever so it might be better that way. This will be determined in the near future. The tmp/year_prize.numbers had the text size increased a fair bit as the default is too small for my pitiful vision (I changed it within reason as it can become harder in another way if it's too big - 16" MacBook Pro screen). One of the columns was also widened as it was too short even for the smaller size.
To build:
make all
To use:
echo foo bar | ./dg
Try:
./try.sh
Judges' remarks:
Some C preprocessors got confused about single quotes in certain cases. In particular, the following source line:
b12(ase(bco(acp(bi(acp(bcp(acp(bpl(aqu(bqu(A))))))))))))))))))))))))))))))
sometimes has to be changed to:
b12(ase(bco(acp(bi(acp(bcp(acp(bpl('A'))))))))))))))))))))))))))))
particularly if the C preprocessor botches single quotes in cpp expansions, which we have done for the wider audience.
Author's remarks:
If my preprocessor could hack it, I could write this as one single line rather than 4, but when I do that I get a complaint "defines nested too deeply".
Obfuscation spoiler:
This is another rot13 job (believe it or not) - the #defines are a
novel way of adding tokens: #define b12(x) 12 x means that at
some point in the source a 12 is followed by the compressed nested
#defines. The b12 gets the previous compression as an argument, and
prepends the 12, thus making another step in the recreation of the
source. The axx() #defines do the same, but add tokens after.
As for the rot13 algorithm, it relies on index(3) to find if the
character is in the set A-Za-z. l[] is an array that gets filled
with:
"nopqrstuvwxyzzzzabcdefghijklmmmmNOPQRSTUVWXYZZZZABCDEFGHIJKLMMMM"
If index(3) says the char is in the alphabet, then XOR the offset
with 16 to translate, and output, otherwise pass it unchanged.