Update 2000/tomx/README.md

Various fixes (typos and formatting fixes included).
This commit is contained in:
Cody Boone Ferguson committed 2023-02-15 09:34:19 -08:00
1 parent 0c2a0a471d
commit 517e936b63
1 file changed
+83 -80
+83 -80
View File
@@ -1,4 +1,4 @@
Most Complete Program:
# Most Complete Program:
Thomas P John
Mishybi Plamoottil
@@ -9,106 +9,109 @@ Most Complete Program:
http://tomx.tripod.com/
Judges' Comments:
## Judges' Comments:
### To use:
To build:
make tomx
make tomx
### Try:
Try:
rm -f ./tomx
sh tomx.c
./tomx
rm -f ./tomx
sh tomx.c
./tomx
If sh is your shell:
If sh is your shell:
rm -f ./tomx
chmod +x ./tomx.c
./tomx.c
./tomx
rm -f ./tomx
chmod +x ./tomx.c
./tomx.c
./tomx
### Also try:
Also try:
rm -f ./tomx
make -f tomx.c
./tomx
Polyglots have come and gone, but this was the first one we'd seen
where one language *used* another to perform its tasks. An interesting
approach. Admittedly, it's not all that obfuscated - but there's more
to it than you might think, since you have to make sure that your
changes don't change the shell code or the makefile.
rm -f ./tomx
make -f tomx.c
./tomx
Selected Author's Comments:
### Selected Judges Remarks
Summary
-------
This program works as a C source file, a Makefile and also as a
Shell (/bin/sh) script. But unlike some other multi-language prog-
rams, this one is NOT meant to print "Hello, world" in all 3 cases
(At least in the true sense ;-)). The C, make and shell code build
upon each other to create a C program (?) which when executed as a
shell script will compile itself through the C compiler using a
makefile! - Pretty useful, Eh?.
Polyglots have come and gone, but this was the first one we'd seen
where one language *used* another to perform its tasks. An interesting
approach. Admittedly, it's not all that obfuscated - but there's more
to it than you might think, since you have to make sure that your
changes don't change the shell code or the makefile.
Probably, this is the first entry ever to fully satisfy Rule #1
("Your entry must be a complete program") in the strictest sense;-)
Top 5 reasons (IMHO) why this code is an entry for IOCCC
--------------------------------------------------------
1. A glance at the source itself will tell U that most of the
Obfuscation is NOT in the C code per se, but in the comments
to the C code. (But sadly, I could not find an "International
Obfuscated C COMMENT contest". So I HAD to sent this entry
here to the IOCCC itself).
### Selected Author's Comments:
2. Of the 3 languages in the source, the least obfuscated is
C (But again, there was NO obfuscated make/shscript contest)
(Does this hint for a rule in IOCCC-2001 that the major
obfuscation should be in C and not elsewhere???. Mmmmm...)
### Summary
3. Extending Argument #2... Obfuscation done in the C code
(comments?) create obfuscated code for the other 2 languages.
This opens new possibilities to be explored in depth in future
IOCCCs
This program works as a C source file, a Makefile and also as a
Shell (/bin/sh) script. But unlike some other multi-language prog-
rams, this one is NOT meant to print "Hello, world" in all 3 cases
(At least in the true sense ;-)). The C, make and shell code build
upon each other to create a C program (?) which when executed as a
shell script will compile itself through the C compiler using a
makefile! - Pretty useful, Eh?.
4. LOOKS like a makefile, WORKS like a shell script and COMPILES
like a C program
Probably, this is the first entry ever to fully satisfy Rule #1
("Your entry must be a complete program") in the strictest sense;-)
5. Does something useful (See Notes #1, #2)
### Top 5 reasons (IMHO) why this code is an entry for IOCCC
Notes
-----
1. The program could have been something other than the simple
"Hello, world" program that it is. It is possible to do
#include "prog2.c" in the place of the main(), leaving the
complexities of the C file elsewhere and making this source
still acceptable to "make" and "sh". The following modif-
ication to the last few lines will compile IOCCCs famous
"mkentry.c"
1. A glance at the source itself will tell you that most of the
Obfuscation is NOT in the C code per se, but in the comments
to the C code. (But sadly, I could not find an "International
Obfuscated C COMMENT contest". So I HAD to send this entry
here to the IOCCC itself).
.PHONY: /* true clean */
#undef true
#include "mkentry.c"
2. Of the 3 languages in the source, the least obfuscated is
C (But again, there was NO obfuscated make/shscript contest)
(Does this hint for a rule in IOCCC-2001 that the major
obfuscation should be in C and not elsewhere???. Mmmmm...).
Ain't that useful?
3. Extending Argument #2... Obfuscation done in the C code
(comments?) create obfuscated code for the other 2 languages.
This opens new possibilities to be explored in depth in future
IOCCCs.
2. By extending this program's idea, It is possible to do some
very interesting things like generating C code on execution
by adding additional code in make/sh (open up a loop????).
This opens the possibilities of generating & compiling some
[obfuscated?] C code.(Maybe should try this if this program
fails at IOCCC 2000)
4. LOOKS like a Makefile, WORKS like a shell script and COMPILES
like a C program.
3. Changing the "%:%.c" dependency to a "$(PROG):$(PROG).c" form
can compile this program with some other make-s (I got it to
work in Windows using nmake and Gnuwin32's sh ;-)
5. Does something useful (See Notes #1, #2).
4. Interesting things to do: try "$ ./tomx.c clean". This will
do the same as "make clean" :-)). Also: "$ ./tomx.c all"
5. Be careful about the Tabs in the source code. Removing them
or converting Tabs to spaces can be disasterous
### Notes
1. The program could have been something other than the simple "Hello, world"
program that it is. It is possible to do `#include "prog2.c"` in the place of
the main(), leaving the complexities of the C file elsewhere and making this
source still acceptable to "make" and "sh". The following modification to the
last few lines will compile the IOCCC's famous `mkentry.c`.
.PHONY: /* true clean */
#undef true
#include "mkentry.c"
Ain't that useful?
2. By extending this program's idea, It is possible to do some
very interesting things like generating C code on execution
by adding additional code in make/sh (open up a loop????).
This opens the possibilities of generating & compiling some
[obfuscated?] C code. (Maybe should try this if this program
fails at IOCCC 2000)
3. Changing the `%:%.c` dependency to a `$(PROG):$(PROG).c` form
can compile this program with some other `make`s (I got it to
work in Windows using nmake and Gnuwin32's sh ;-)
4. Interesting things to do: try `./tomx.c clean`. This will
do the same as `make clean` :-)). Also: `./tomx.c all`
5. Be careful about the Tabs in the source code. Removing them
or converting Tabs to spaces can be disastrous.