Update 2000/tomx/README.md
Various fixes (typos and formatting fixes included).
This commit is contained in:
1 parent
0c2a0a471d
commit
517e936b63
1 file changed
+83
-80
+83
-80
@@ -1,4 +1,4 @@
|
|||||||
Most Complete Program:
|
# Most Complete Program:
|
||||||
|
|
||||||
Thomas P John
|
Thomas P John
|
||||||
Mishybi Plamoottil
|
Mishybi Plamoottil
|
||||||
@@ -9,106 +9,109 @@ Most Complete Program:
|
|||||||
http://tomx.tripod.com/
|
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
|
If sh is your shell:
|
||||||
sh tomx.c
|
|
||||||
./tomx
|
|
||||||
|
|
||||||
If sh is your shell:
|
rm -f ./tomx
|
||||||
|
chmod +x ./tomx.c
|
||||||
|
./tomx.c
|
||||||
|
./tomx
|
||||||
|
|
||||||
rm -f ./tomx
|
### Also try:
|
||||||
chmod +x ./tomx.c
|
|
||||||
./tomx.c
|
|
||||||
./tomx
|
|
||||||
|
|
||||||
Also try:
|
rm -f ./tomx
|
||||||
|
make -f tomx.c
|
||||||
rm -f ./tomx
|
./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.
|
|
||||||
|
|
||||||
|
|
||||||
Selected Author's Comments:
|
### Selected Judges Remarks
|
||||||
|
|
||||||
Summary
|
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
|
||||||
This program works as a C source file, a Makefile and also as a
|
approach. Admittedly, it's not all that obfuscated - but there's more
|
||||||
Shell (/bin/sh) script. But unlike some other multi-language prog-
|
to it than you might think, since you have to make sure that your
|
||||||
rams, this one is NOT meant to print "Hello, world" in all 3 cases
|
changes don't change the shell code or the makefile.
|
||||||
(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?.
|
|
||||||
|
|
||||||
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
|
### Selected Author's Comments:
|
||||||
--------------------------------------------------------
|
|
||||||
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).
|
|
||||||
|
|
||||||
2. Of the 3 languages in the source, the least obfuscated is
|
### Summary
|
||||||
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...)
|
|
||||||
|
|
||||||
3. Extending Argument #2... Obfuscation done in the C code
|
This program works as a C source file, a Makefile and also as a
|
||||||
(comments?) create obfuscated code for the other 2 languages.
|
Shell (/bin/sh) script. But unlike some other multi-language prog-
|
||||||
This opens new possibilities to be explored in depth in future
|
rams, this one is NOT meant to print "Hello, world" in all 3 cases
|
||||||
IOCCCs
|
(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
|
Probably, this is the first entry ever to fully satisfy Rule #1
|
||||||
like a C program
|
("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. 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
|
||||||
1. The program could have been something other than the simple
|
to the C code. (But sadly, I could not find an "International
|
||||||
"Hello, world" program that it is. It is possible to do
|
Obfuscated C COMMENT contest". So I HAD to send this entry
|
||||||
#include "prog2.c" in the place of the main(), leaving the
|
here to the IOCCC itself).
|
||||||
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"
|
|
||||||
|
|
||||||
.PHONY: /* true clean */
|
2. Of the 3 languages in the source, the least obfuscated is
|
||||||
#undef true
|
C (But again, there was NO obfuscated make/shscript contest)
|
||||||
#include "mkentry.c"
|
(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
|
4. LOOKS like a Makefile, WORKS like a shell script and COMPILES
|
||||||
very interesting things like generating C code on execution
|
like a C program.
|
||||||
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
|
5. Does something useful (See Notes #1, #2).
|
||||||
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
|
### Notes
|
||||||
or converting Tabs to spaces can be disasterous
|
|
||||||
|
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.
|
||||||
|
|
||||||
Reference in new issue
Block a user