With more clever use of the Makefile the number of characters is back
down to 80 which is what the original was!
This also fixes the warning that was introduced when it was dropped back
down to 85. 'B' is defined as '(int)b' which is used in two places where
a cast is necessary or otherwise will silent a warning.
The README.md file has been checked and this should complete this entry
now.
With clever use of the Makefile and removing a cast that is not strictly
necessary (it does trigger a warning but it still produces correct
output) I was able to get what was once 80 characters but when fixed
increased to 106 characters all the way back down to 85. As for how this
was done it might be helpful to look at what it was prior to this update
as well as the original. The previous version was:
int main(int a, char **b){while((a=getchar())+1)putchar((b=64^a&223)&&(int)b<27?a&96|((int)b+12)%26+1:a);
and the original was:
main(a,b){while((a=getchar())+1)putchar((b=64^a&223)&&b<27?a&96|(b+12)%26+1:a);}
The problem with the original besides needing one of the casts is that
clang is stricter with the types of args of main(). Now it looks like:
main(a,b){while((a=getchar())+1)putchar((b=64^a&223)&&b<27?a&96|((int)b+12)%26+1:a);}
which is almost the same as the original. But how was this done? The
Makefile does:
-D'main(a,b)'='int main(a,b)char**b;'
which lets the main() part be the same as the original but still compile
with clang.
I also added the script demo.sh which simplifies running the command I
had added (or more likely extended) but it also shows it line by line so
you can see how the text is rotated. One of my favourites of the lot is
from Brian Westley and that is one I added.
We we move 1988-2004 entries from all of a year's winning entries
in a single directory to each winner being in their own sub-directory
under the given year directory.