Merge pull request #1872 from xexyl/westley90-try
Add 1990/westley/try.sh
This commit is contained in:
23 files changed
+367
-73
No files matched your search
+7
-11
@@ -7,21 +7,19 @@ make clobber all
|
|||||||
```
|
```
|
||||||
|
|
||||||
There is an alternate version with a slight difference that you may wish to try.
|
There is an alternate version with a slight difference that you may wish to try.
|
||||||
See [Alternate code](#alternate-code) below.
|
See the [Alternate code](#alternate-code) section below for more details.
|
||||||
|
|
||||||
|
|
||||||
## To use:
|
## To use:
|
||||||
|
|
||||||
NOTE: this will run the program itself:
|
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
make clobber all
|
./jar.1
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
## Alternate code:
|
## Alternate code:
|
||||||
|
|
||||||
This code, which prints something slightly different, is provided as well.
|
This alternate code, which prints something slightly different, is provided as well.
|
||||||
|
|
||||||
|
|
||||||
### Alternate build:
|
### Alternate build:
|
||||||
@@ -35,11 +33,9 @@ make clobber alt
|
|||||||
|
|
||||||
### Alternate use:
|
### Alternate use:
|
||||||
|
|
||||||
Alternatively, you can run it directly:
|
|
||||||
|
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
./jar.1.alt.sh
|
./jar.1.alt
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
@@ -53,7 +49,7 @@ cc -c -o /dev/tty jar.1.c
|
|||||||
```
|
```
|
||||||
|
|
||||||
As a last resort the `jar.1.sh` script provided simulates
|
As a last resort the `jar.1.sh` script provided simulates
|
||||||
writing the raw binary the .o file to the terminal.
|
writing the raw binary of the .o file to the terminal.
|
||||||
|
|
||||||
Abuse of the rules winners usually result in a change of the rules.
|
Abuse of the rules winners usually result in a change of the rules.
|
||||||
Starting in 1990, compiling entries must result an regular file
|
Starting in 1990, compiling entries must result an regular file
|
||||||
@@ -78,10 +74,10 @@ strings utility before writing to standard output instead of
|
|||||||
`/dev/tty`.
|
`/dev/tty`.
|
||||||
|
|
||||||
As a historical note, the Makefile does echo the original command
|
As a historical note, the Makefile does echo the original command
|
||||||
to standard output, the original shell command that did write raw
|
to standard output, the original shell command that once wrote raw
|
||||||
binary to the `/dev/tty` special file.
|
binary to the `/dev/tty` special file.
|
||||||
|
|
||||||
The use piping raw binary thru stings makes the original 1989 output
|
The use of piping raw binary thru stings makes the original 1989 output
|
||||||
more apparent, as was the case when using dumb CRT terminals (some
|
more apparent, as was the case when using dumb CRT terminals (some
|
||||||
do dumb that they couldn't even process simple ANSI escape sequences)
|
do dumb that they couldn't even process simple ANSI escape sequences)
|
||||||
were more common.
|
were more common.
|
||||||
|
|||||||
@@ -22,8 +22,6 @@ NOTE: this entry will likely segfault on invalid input.
|
|||||||
```sh
|
```sh
|
||||||
./try.sh
|
./try.sh
|
||||||
|
|
||||||
cat chocolate_cake.lisp ; ./jar.2 < chocolate_cake.lisp
|
|
||||||
|
|
||||||
./try.sh chocolate_cake.lisp
|
./try.sh chocolate_cake.lisp
|
||||||
|
|
||||||
./try.sh try.txt
|
./try.sh try.txt
|
||||||
|
|||||||
@@ -19,8 +19,13 @@ fi
|
|||||||
|
|
||||||
for f in $FILES; do
|
for f in $FILES; do
|
||||||
if [[ -e "$f" && -r "$f" ]]; then
|
if [[ -e "$f" && -r "$f" ]]; then
|
||||||
|
read -r -n 1 -p "Press any key to run: cat $f: "
|
||||||
|
echo 1>&2
|
||||||
|
cat "$f"
|
||||||
|
echo 1>&2
|
||||||
read -r -n 1 -p "Press any key to run: ./jar.2 < $f: "
|
read -r -n 1 -p "Press any key to run: ./jar.2 < $f: "
|
||||||
echo 1>&2
|
echo 1>&2
|
||||||
./jar.2 < "$f"
|
./jar.2 < "$f"
|
||||||
|
echo 1>&2
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@@ -15,7 +15,7 @@ Run the program this way:
|
|||||||
./ovdluhe < textfile
|
./ovdluhe < textfile
|
||||||
```
|
```
|
||||||
|
|
||||||
The program stops when it reaches the end of the template buffer\
|
The program stops when it reaches the end of the template buffer
|
||||||
by chance or is killed.
|
by chance or is killed.
|
||||||
|
|
||||||
|
|
||||||
@@ -39,8 +39,9 @@ make P=9 clobber alt
|
|||||||
```
|
```
|
||||||
|
|
||||||
You do not have to define `P` but if you do you can replace the value with
|
You do not have to define `P` but if you do you can replace the value with
|
||||||
whatever you wish, as long as it's an int (or evaluates to an int like the
|
whatever you wish, as long as it's a positive `int` (or evaluates to a positive
|
||||||
default `(A<<AP)` does).
|
`int` like the default `(A<<AP)` does). Too high a value will likely cause the
|
||||||
|
program to fail and a negative value will cause a compilation error.
|
||||||
|
|
||||||
|
|
||||||
### Alternate use:
|
### Alternate use:
|
||||||
@@ -57,7 +58,8 @@ default `(A<<AP)` does).
|
|||||||
P=5 ./try.alt.sh
|
P=5 ./try.alt.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
NOTE: if you specify too high a value for `P` the program might fail.
|
NOTE: if you specify too high a value for `P` the program might fail. If you
|
||||||
|
specify a value < 0 it will fail to compile.
|
||||||
|
|
||||||
|
|
||||||
## Judges' remarks:
|
## Judges' remarks:
|
||||||
|
|||||||
+6
-16
@@ -29,27 +29,17 @@ For more detailed information see [1989 robison in bugs.md](/bugs.md#1989-robiso
|
|||||||
```sh
|
```sh
|
||||||
./robison
|
./robison
|
||||||
11x10
|
11x10
|
||||||
|
# enter other expressions
|
||||||
|
|
||||||
echo 1x10x111 | ./robison
|
./try.sh
|
||||||
|
|
||||||
echo 1+1+10 | ./robison
|
|
||||||
|
|
||||||
echo 100 - 1 | ./robison
|
|
||||||
|
|
||||||
echo -100 x 100 + 1 | ./robison
|
|
||||||
|
|
||||||
echo 100 / 100 | ./robison # <-- what happens here ?
|
echo 100 / 100 | ./robison # <-- what happens here ?
|
||||||
```
|
```
|
||||||
|
|
||||||
NOTE: This program will very likely crash or break into tiny bits
|
NOTE: This program will very likely crash or break into tiny bits :-) if you
|
||||||
:-) if you feed it numbers with non-binary digits.
|
feed it numbers with non-binary digits. This, as you might notice if you try one
|
||||||
|
of the above commands, can happen with other input as well. If you wish to
|
||||||
This is supposed to happen. As is written in the
|
understand why this happens check the source code.
|
||||||
[The Jargon File](http://catb.org/jargon/html/F/feature.html):
|
|
||||||
|
|
||||||
```
|
|
||||||
That's not a bug, that's a feature.
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## Judges' remarks:
|
## Judges' remarks:
|
||||||
|
|||||||
Executable
+41
@@ -0,0 +1,41 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# try.sh - demonstrate IOCCC winner 1989/robison
|
||||||
|
#
|
||||||
|
|
||||||
|
# make sure CC is set so that when we do make CC="$CC" it isn't empty. Doing it
|
||||||
|
# this way allows us to have the user specify a different compiler in an easy
|
||||||
|
# way.
|
||||||
|
if [[ -z "$CC" ]]; then
|
||||||
|
CC="cc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
make CC="$CC" all >/dev/null || exit 1
|
||||||
|
|
||||||
|
# clear screen after compilation so that only the entry is shown
|
||||||
|
clear
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to run: echo 1x10x111 | ./robison: "
|
||||||
|
echo 1>&2
|
||||||
|
echo 1x10x111 | ./robison
|
||||||
|
echo 1>&2
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to run: echo 1+1+10 | ./robison: "
|
||||||
|
echo 1>&2
|
||||||
|
echo 1+1+10 | ./robison
|
||||||
|
echo 1>&2
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to run: echo 100 - 1 | ./robison: "
|
||||||
|
echo 1>&2
|
||||||
|
echo 100 - 1 | ./robison
|
||||||
|
echo 1>&2
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to run: echo -100 x 100 + 1 | ./robison: "
|
||||||
|
echo 1>&2
|
||||||
|
echo -100 x 100 + 1 | ./robison
|
||||||
|
echo 1>&2
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to run: echo 101x111-100 | ./robison: "
|
||||||
|
echo 1>&2
|
||||||
|
echo 101x111-100 | ./robison
|
||||||
|
echo 1>&2
|
||||||
@@ -23,6 +23,3 @@ echo 1>&2
|
|||||||
read -r -n 1 -p "Press any key to run: ./vanb unix is better than os/2 (space = next page, q = quit): "
|
read -r -n 1 -p "Press any key to run: ./vanb unix is better than os/2 (space = next page, q = quit): "
|
||||||
echo 1>&2
|
echo 1>&2
|
||||||
./vanb unix is better than os/2 | less -rEXF
|
./vanb unix is better than os/2 | less -rEXF
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -4,7 +4,8 @@
|
|||||||
make all
|
make all
|
||||||
```
|
```
|
||||||
|
|
||||||
There is [alternate code](#alternate-code) for those using Turbo-C or MSC.
|
There is an alternate version for those using Turbo-C or MSC. See [alternate
|
||||||
|
code](#alternate-code) below for details.
|
||||||
|
|
||||||
|
|
||||||
## To use:
|
## To use:
|
||||||
|
|||||||
Executable
+27
@@ -0,0 +1,27 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# try.sh - demonstrate IOCCC winner 1990/baruch
|
||||||
|
#
|
||||||
|
|
||||||
|
# make sure CC is set so that when we do make CC="$CC" it isn't empty. Doing it
|
||||||
|
# this way allows us to have the user specify a different compiler in an easy
|
||||||
|
# way.
|
||||||
|
if [[ -z "$CC" ]]; then
|
||||||
|
CC="cc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
make CC="$CC" all >/dev/null || exit 1
|
||||||
|
|
||||||
|
# clear screen after compilation so that only the entry is shown
|
||||||
|
clear
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to run: echo 5 | ./baruch (space = next page, q = quit): "
|
||||||
|
echo 1>&2
|
||||||
|
echo 5 | ./baruch | less -rEXF
|
||||||
|
echo 1>&2
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to run: echo 2 | ./baruch: "
|
||||||
|
echo 1>&2
|
||||||
|
echo 2 | ./baruch
|
||||||
|
echo "Why was there no output? What other conditions cause this?" 1>&2
|
||||||
|
echo 1>&2
|
||||||
+1
-1
@@ -15,7 +15,7 @@ echo foo bar | ./dg
|
|||||||
### Try:
|
### Try:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
echo "to C or not to C" | ./dg
|
./try.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Executable
+38
@@ -0,0 +1,38 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# try.sh - demonstrate IOCCC winner 1990/dg
|
||||||
|
#
|
||||||
|
|
||||||
|
# make sure CC is set so that when we do make CC="$CC" it isn't empty. Doing it
|
||||||
|
# this way allows us to have the user specify a different compiler in an easy
|
||||||
|
# way.
|
||||||
|
if [[ -z "$CC" ]]; then
|
||||||
|
CC="cc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
make CC="$CC" all >/dev/null || exit 1
|
||||||
|
|
||||||
|
# clear screen after compilation so that only the entry is shown
|
||||||
|
clear
|
||||||
|
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to run: echo 'to C or not to C' | ./dg: "
|
||||||
|
echo 1>&2
|
||||||
|
echo 'to C or not to C' | ./dg
|
||||||
|
echo 1>&2
|
||||||
|
|
||||||
|
echo "$ echo 'The quick brown fox jumps over the lazy dog' | ./dg" 1>&2
|
||||||
|
read -r -n 1 -p "Press any key to continue: "
|
||||||
|
echo 1>&2
|
||||||
|
echo 'The quick brown fox jumps over the lazy dog' | ./dg
|
||||||
|
echo 1>&2
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to show dg.c (space = next page, q = quit): "
|
||||||
|
echo 1>&2
|
||||||
|
less -rEXF dg.c
|
||||||
|
echo 1>&2
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to run: ./dg < dg.c (space = next page, q = quit): "
|
||||||
|
echo 1>&2
|
||||||
|
./dg < dg.c | less -rEXF
|
||||||
|
echo 1>&2
|
||||||
+25
-5
@@ -1,6 +1,24 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# try.sh - demonstrate IOCCC winner 1990/jaw
|
||||||
|
#
|
||||||
|
|
||||||
echo "Running shark.sh:"
|
# make sure CC is set so that when we do make CC="$CC" it isn't empty. Doing it
|
||||||
|
# this way allows us to have the user specify a different compiler in an easy
|
||||||
|
# way.
|
||||||
|
if [[ -z "$CC" ]]; then
|
||||||
|
CC="cc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
make CC="$CC" all >/dev/null || exit 1
|
||||||
|
|
||||||
|
# clear screen after compilation so that only the entry is shown
|
||||||
|
clear
|
||||||
|
|
||||||
|
|
||||||
|
echo "$ ./shark.sh atob shark.sh README.md jaw.c try.sh > receive"
|
||||||
|
read -r -n 1 -p "Press any key to continue: "
|
||||||
|
echo 1>&2
|
||||||
./shark.sh atob shark.sh README.md jaw.c try.sh > receive || exit 1
|
./shark.sh atob shark.sh README.md jaw.c try.sh > receive || exit 1
|
||||||
echo "Done."
|
echo "Done."
|
||||||
|
|
||||||
@@ -15,11 +33,13 @@ mkdir -p test || exit 0
|
|||||||
cd test || exit
|
cd test || exit
|
||||||
chmod +x ../receive
|
chmod +x ../receive
|
||||||
# run the script
|
# run the script
|
||||||
echo "Attempting to extract files:"
|
read -r -n 1 -p "Press any key to run ../receive (extract files): "
|
||||||
../receive
|
echo 1>&2
|
||||||
|
../receive
|
||||||
|
echo 1>&2
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to run: ls -al: "
|
||||||
echo 1>&2
|
echo 1>&2
|
||||||
echo "$ ls -al" 1>&2
|
|
||||||
ls -al
|
ls -al
|
||||||
|
|
||||||
echo 1>&2
|
echo 1>&2
|
||||||
|
|||||||
@@ -7,3 +7,4 @@ indent.o
|
|||||||
prog.orig
|
prog.orig
|
||||||
scjones
|
scjones
|
||||||
scjones.orig
|
scjones.orig
|
||||||
|
scjones.tmp.c
|
||||||
@@ -12,6 +12,13 @@ make all
|
|||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Try:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
./try.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
## Judges' remarks:
|
## Judges' remarks:
|
||||||
|
|
||||||
The addition of trigraphs has made it easier to make programs hard to read. It
|
The addition of trigraphs has made it easier to make programs hard to read. It
|
||||||
|
|||||||
Executable
+35
@@ -0,0 +1,35 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# try.sh - demonstrate IOCCC winner 1990/scjones
|
||||||
|
#
|
||||||
|
|
||||||
|
# make sure CC is set so that when we do make CC="$CC" it isn't empty. Doing it
|
||||||
|
# this way allows us to have the user specify a different compiler in an easy
|
||||||
|
# way.
|
||||||
|
if [[ -z "$CC" ]]; then
|
||||||
|
CC="cc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
make CC="$CC" all >/dev/null || exit 1
|
||||||
|
|
||||||
|
# clear screen after compilation so that only the entry is shown
|
||||||
|
clear
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to show scjones.c: "
|
||||||
|
echo 1>&2
|
||||||
|
less -rEXF scjones.c
|
||||||
|
echo 1>&2
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to run: ./scjones (space = next page, q = quit): "
|
||||||
|
echo 1>&2
|
||||||
|
./scjones | less -rEXF
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to run: ./scjones > scjones.tmp.c: "
|
||||||
|
echo 1>&2
|
||||||
|
./scjones > scjones.tmp.c
|
||||||
|
echo 1>&2
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to compare scjones.c and scjones.tmp.c: "
|
||||||
|
echo 1>&2
|
||||||
|
diff -s scjones.c scjones.tmp.c
|
||||||
|
rm scjones.tmp.c
|
||||||
+15
-10
@@ -4,7 +4,19 @@
|
|||||||
make all
|
make all
|
||||||
```
|
```
|
||||||
|
|
||||||
There is an [alternate version](#alternate-code) to this program.
|
The authors provided another version of this program. See the [alternate
|
||||||
|
version](#alternate-code) section below.
|
||||||
|
|
||||||
|
|
||||||
|
### Bugs and (Mis)features:
|
||||||
|
|
||||||
|
The current status of this entry is:
|
||||||
|
|
||||||
|
```
|
||||||
|
STATUS: INABIAF - please **DO NOT** fix
|
||||||
|
```
|
||||||
|
|
||||||
|
For more detailed information see [1990 tbr in bugs.md](/bugs.md#1990-tbr).
|
||||||
|
|
||||||
|
|
||||||
### A note about the fixes of this entry in 2023:
|
### A note about the fixes of this entry in 2023:
|
||||||
@@ -21,7 +33,7 @@ $ warning: this program uses gets(), which is unsafe.
|
|||||||
which kind of hid the prompt. Thus the entry was changed to use `fgets(3)` which
|
which kind of hid the prompt. Thus the entry was changed to use `fgets(3)` which
|
||||||
is referred to later in this file.
|
is referred to later in this file.
|
||||||
|
|
||||||
Also `exit(3)` returns void but the entry was using it in a binary expression so
|
Also `exit(3)` returns `void` but the entry was using it in a binary expression so
|
||||||
this entry would not compile in modern systems. This fix is also referred to
|
this entry would not compile in modern systems. This fix is also referred to
|
||||||
below, in the [alternate version](#alternate-code) section.
|
below, in the [alternate version](#alternate-code) section.
|
||||||
|
|
||||||
@@ -58,13 +70,6 @@ vi tbr.c
|
|||||||
What happens if you try using `cd -` to return to previous directory? What about
|
What happens if you try using `cd -` to return to previous directory? What about
|
||||||
`cd` with no args?
|
`cd` with no args?
|
||||||
|
|
||||||
This is supposed to happen. As is written in the
|
|
||||||
[The Jargon File](http://catb.org/jargon/html/F/feature.html):
|
|
||||||
|
|
||||||
```
|
|
||||||
That's not a bug, that's a feature.
|
|
||||||
```
|
|
||||||
|
|
||||||
The authors include a section called [BUGS](#bugs) that, because they were
|
The authors include a section called [BUGS](#bugs) that, because they were
|
||||||
documented, are not considered bugs as such in the context of the contest.
|
documented, are not considered bugs as such in the context of the contest.
|
||||||
|
|
||||||
@@ -87,7 +92,7 @@ r(o,0)D o)D*f):4,wait(0):(o?dup2(*f,0)D*f)D o):*i?1 D
|
|||||||
e(x){x<0?write(2,"?\n$ "-x/4,2),x+1||(exit(1),0):5;}
|
e(x){x<0?write(2,"?\n$ "-x/4,2),x+1||(exit(1),0):5;}
|
||||||
```
|
```
|
||||||
|
|
||||||
and in the [alternate source](tbr.alt.c). It has the `exit()` returns void fix
|
and in the [alternate source](tbr.alt.c). It has the `exit()` returns `void` fix
|
||||||
as well as the `gets()` to `fgets()` fix applied to it to make it functionally
|
as well as the `gets()` to `fgets()` fix applied to it to make it functionally
|
||||||
equivalent like the authors intended.
|
equivalent like the authors intended.
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ CSILENCE= -Wno-deprecated-declarations -Wno-empty-body -Wno-error -Wno-unused-va
|
|||||||
-Wno-implicit-function-declaration -Wno-incompatible-pointer-types \
|
-Wno-implicit-function-declaration -Wno-incompatible-pointer-types \
|
||||||
-Wno-macro-redefined -Wno-parentheses -Wno-return-type -Wno-unused-parameter \
|
-Wno-macro-redefined -Wno-parentheses -Wno-return-type -Wno-unused-parameter \
|
||||||
-Wno-empty-translation-unit -Wno-deprecated-non-prototype -Wno-int-conversion \
|
-Wno-empty-translation-unit -Wno-deprecated-non-prototype -Wno-int-conversion \
|
||||||
-Wno-strict-prototypes
|
-Wno-strict-prototypes -Wno-implicit-int
|
||||||
|
|
||||||
# Common C compiler warning flags
|
# Common C compiler warning flags
|
||||||
#
|
#
|
||||||
|
|||||||
+6
-11
@@ -36,20 +36,10 @@ y1 - initial value (y(x1) == y1)
|
|||||||
### Try:
|
### Try:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
./theorem y 0 1 0.1 1
|
./try.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
If the two args passed to `fibonacci` and `theorem_bkp` add to 0 it will
|
|
||||||
print 0 over and over again in an infinite loop. In this case it should not be
|
|
||||||
fixed (another condition where this occurred was fixed in 2023 as it affected
|
|
||||||
usability of the program).
|
|
||||||
|
|
||||||
This is supposed to happen. As is written in the
|
|
||||||
[The Jargon File](http://catb.org/jargon/html/F/feature.html):
|
|
||||||
|
|
||||||
```
|
|
||||||
That's not a bug, that's a feature.
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## Judges' remarks:
|
## Judges' remarks:
|
||||||
@@ -113,6 +103,11 @@ make fibonacci
|
|||||||
./fibonacci 2 1
|
./fibonacci 2 1
|
||||||
```
|
```
|
||||||
|
|
||||||
|
NOTE: if the two args passed to `fibonacci` and `theorem_bkp` add to 0 it will
|
||||||
|
print 0 over and over again in an infinite loop. In this case it should not be
|
||||||
|
fixed (another condition where this occurred was fixed in 2023 as it affected
|
||||||
|
usability of the program).
|
||||||
|
|
||||||
Program available on 9 track and cartridge cassette. Neither [Ginsu
|
Program available on 9 track and cartridge cassette. Neither [Ginsu
|
||||||
knife](https://ginsu.com) nor [Swiss army
|
knife](https://ginsu.com) nor [Swiss army
|
||||||
knife](https://en.wikipedia.org/wiki/Swiss_Army_knife) included! :-)
|
knife](https://en.wikipedia.org/wiki/Swiss_Army_knife) included! :-)
|
||||||
|
|||||||
Executable
+76
@@ -0,0 +1,76 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# try.sh - demonstrate IOCCC winner 1990/theorem
|
||||||
|
#
|
||||||
|
|
||||||
|
# make sure CC is set so that when we do make CC="$CC" it isn't empty. Doing it
|
||||||
|
# this way allows us to have the user specify a different compiler in an easy
|
||||||
|
# way.
|
||||||
|
if [[ -z "$CC" ]]; then
|
||||||
|
CC="cc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
make CC="$CC" all >/dev/null || exit 1
|
||||||
|
|
||||||
|
# clear screen after compilation so that only the entry is shown
|
||||||
|
clear
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to run: ./theorem y 0 1 0.1 1: "
|
||||||
|
echo 1>&2
|
||||||
|
./theorem y 0 1 0.1 1
|
||||||
|
echo 1>&2
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to run: ./theorem x 1 2 0.1 2: "
|
||||||
|
echo 1>&2
|
||||||
|
./theorem x 1 2 0.1 2
|
||||||
|
echo 1>&2
|
||||||
|
|
||||||
|
echo "$ ./theorem -r 0 0 0 0 < theorem.c > sorter.c" 1>&2
|
||||||
|
./theorem -r 0 0 0 0 < theorem.c > sorter.c
|
||||||
|
echo "$ make sorter" 1>&2
|
||||||
|
make sorter
|
||||||
|
echo 1>&2
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to run: ls | ./sorter > ls.sorted.txt: "
|
||||||
|
echo 1>&2
|
||||||
|
# SC2012 (info): Use find instead of ls to better handle non-alphanumeric filenames.
|
||||||
|
# shellcheck disable=SC2012
|
||||||
|
ls | ./sorter > ls.sorted.txt
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to run: ls -r > ls.txt: "
|
||||||
|
echo 1>&2
|
||||||
|
ls -r > ls.txt
|
||||||
|
echo 1>&2
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to run: ./sorter < ls.txt: "
|
||||||
|
echo 1>&2
|
||||||
|
./sorter < ls.txt
|
||||||
|
echo 1>&2
|
||||||
|
|
||||||
|
read -r -n 1 -p "./sorter < ls.txt > ls.sorted.2.txt: "
|
||||||
|
echo 1>&2
|
||||||
|
./sorter < ls.txt > ls.sorted.2.txt
|
||||||
|
echo 1>&2
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to show diff between ls.sorted.2.txt and ls.sorted.txt: "
|
||||||
|
echo 1>&2
|
||||||
|
diff -s ls.sorted.2.txt ls.sorted.txt
|
||||||
|
echo 1>&2
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to run: ./sorter 0 0 0 0 < theorem.c > fibonacci.c: "
|
||||||
|
./sorter 0 0 0 0 < theorem.c > fibonacci.c
|
||||||
|
echo "$ make fibonacci" 1>&2
|
||||||
|
make fibonacci
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to run: ./fibonacci 1 7: "
|
||||||
|
echo 1>&2
|
||||||
|
./fibonacci 1 7
|
||||||
|
echo 1>&2
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to run: ./fibonacci 2 5: "
|
||||||
|
echo 1>&2
|
||||||
|
./fibonacci 2 5
|
||||||
|
echo 1>&2
|
||||||
@@ -17,10 +17,7 @@ The number should be greater than 0.
|
|||||||
### Try:
|
### Try:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
./westley 1
|
./try.sh
|
||||||
./westley 2
|
|
||||||
./westley 3
|
|
||||||
./westley 5
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Executable
+36
@@ -0,0 +1,36 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# try.sh - demonstrate IOCCC winner 1990/westley
|
||||||
|
#
|
||||||
|
|
||||||
|
# make sure CC is set so that when we do make CC="$CC" it isn't empty. Doing it
|
||||||
|
# this way allows us to have the user specify a different compiler in an easy
|
||||||
|
# way.
|
||||||
|
if [[ -z "$CC" ]]; then
|
||||||
|
CC="cc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
make CC="$CC" all >/dev/null || exit 1
|
||||||
|
|
||||||
|
# clear screen after compilation so that only the entry is shown
|
||||||
|
clear
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to run: ./westley 1: "
|
||||||
|
echo 1>&2
|
||||||
|
./westley 1
|
||||||
|
echo 1>&2
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to run: ./westley 2: "
|
||||||
|
echo 1>&2
|
||||||
|
./westley 2
|
||||||
|
echo 1>&2
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to run: ./westley 3: "
|
||||||
|
echo 1>&2
|
||||||
|
./westley 3
|
||||||
|
echo 1>&2
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to run: ./westley 5: "
|
||||||
|
echo 1>&2
|
||||||
|
./westley 5
|
||||||
|
echo 1>&2
|
||||||
@@ -543,6 +543,9 @@ If you want to try and fix this (mis)feature, you are welcome to try.
|
|||||||
This program will very likely crash or break into tiny bits :-) if you feed it
|
This program will very likely crash or break into tiny bits :-) if you feed it
|
||||||
numbers with non-binary digits.
|
numbers with non-binary digits.
|
||||||
|
|
||||||
|
There are also other cases where this can happen for instance using unsupported
|
||||||
|
operators like `/`. To see what operators are supported check the source code.
|
||||||
|
|
||||||
|
|
||||||
## 1989 westley
|
## 1989 westley
|
||||||
|
|
||||||
@@ -724,6 +727,16 @@ options used, seemingly, it has to write to disk the tarball which seems to
|
|||||||
defeat the purpose. This would ideally be fixed.
|
defeat the purpose. This would ideally be fixed.
|
||||||
|
|
||||||
|
|
||||||
|
## 1990 tbr
|
||||||
|
|
||||||
|
### STATUS: INABIAF - please **DO NOT** fix
|
||||||
|
### Source code: [1990/tbr/tbr.c](1990/tbr/tbr.c)
|
||||||
|
### Information: [1990/tbr/README.md](1990/tbr/README.md)
|
||||||
|
|
||||||
|
The authors provided a list of features in the
|
||||||
|
[BUGS](/1990/tbr/README.md#bugs) section in their remarks.
|
||||||
|
|
||||||
|
|
||||||
## 1990 theorem
|
## 1990 theorem
|
||||||
|
|
||||||
### STATUS: INABIAF - please **DO NOT** fix
|
### STATUS: INABIAF - please **DO NOT** fix
|
||||||
|
|||||||
+18
-4
@@ -810,8 +810,8 @@ script.
|
|||||||
|
|
||||||
[Cody](#cody) fixed an infinite loop where the program would print the same thing over
|
[Cody](#cody) fixed an infinite loop where the program would print the same thing over
|
||||||
and over again, flooding the screen. The problem is that there was a `for` loop
|
and over again, flooding the screen. The problem is that there was a `for` loop
|
||||||
that by necessity had to not have an increment stage but only in the `if` path
|
that by necessity had to not have an increment stage but the pointer only got
|
||||||
(in the loop itself) did the pointer get updated.
|
updated in the `if` path (in the loop itself).
|
||||||
|
|
||||||
Cody also provided the [try.sh](/1989/ovdluhe/try.sh) script which runs the
|
Cody also provided the [try.sh](/1989/ovdluhe/try.sh) script which runs the
|
||||||
program four times on three files to show the different output. It doesn't run
|
program four times on three files to show the different output. It doesn't run
|
||||||
@@ -849,6 +849,8 @@ cd 1989/robison ; make diff_orig_prog
|
|||||||
|
|
||||||
(It adds the C token pasting operator `##` instead of `/**/`.)
|
(It adds the C token pasting operator `##` instead of `/**/`.)
|
||||||
|
|
||||||
|
Cody also added the [try.sh](/1989/robison/try.sh) script.
|
||||||
|
|
||||||
|
|
||||||
## <a name="1989_tromp"></a>[1989/tromp](/1989/tromp/tromp.c) ([README.md](/1989/tromp/README.md]))
|
## <a name="1989_tromp"></a>[1989/tromp](/1989/tromp/tromp.c) ([README.md](/1989/tromp/README.md]))
|
||||||
|
|
||||||
@@ -959,11 +961,13 @@ environmental variable; see the README.md for details.
|
|||||||
|
|
||||||
## <a name="1990_baruch"></a>[1990/baruch](/1990/baruch/baruch.c) ([README.md](/1990/baruch/README.md]))
|
## <a name="1990_baruch"></a>[1990/baruch](/1990/baruch/baruch.c) ([README.md](/1990/baruch/README.md]))
|
||||||
|
|
||||||
[Cody](#cody) added an [alternate version](/1990/baruch/baruch.alt.c) which allows Turbo-C
|
[Cody](#cody) added the [try.sh](/1990/baruch/try.sh) script.
|
||||||
|
|
||||||
|
Cody also added an [alternate version](/1990/baruch/baruch.alt.c) which allows Turbo-C
|
||||||
and MSC to compile this code, based on the authors' remarks, except that Cody
|
and MSC to compile this code, based on the authors' remarks, except that Cody
|
||||||
did not change the `" #Q"` string as that showed worse looking output
|
did not change the `" #Q"` string as that showed worse looking output
|
||||||
instead of improved output though he has no way to test the compilers in
|
instead of improved output though he has no way to test the compilers in
|
||||||
question. YMMV.
|
question (i.e. it was only tested in the original entry). YMMV.
|
||||||
|
|
||||||
Although this is appreciated we agree with him that <strike>no one</strike>
|
Although this is appreciated we agree with him that <strike>no one</strike>
|
||||||
[very few](https://en.wikipedia.org/wiki/0)
|
[very few](https://en.wikipedia.org/wiki/0)
|
||||||
@@ -1020,6 +1024,8 @@ but later Cody added it back to make it more like the original).
|
|||||||
The second problem was suggested by the judges at the time of judging, to do
|
The second problem was suggested by the judges at the time of judging, to do
|
||||||
with if the C preprocessor botches single quotes in cpp expansion.
|
with if the C preprocessor botches single quotes in cpp expansion.
|
||||||
|
|
||||||
|
Cody also added the [try.sh](/1990/dg/try.sh) script.
|
||||||
|
|
||||||
|
|
||||||
## <a name="1990_jaw"></a>[1990/jaw](/1990/jaw/jaw.c) ([README.md](/1990/jaw/README.md]))
|
## <a name="1990_jaw"></a>[1990/jaw](/1990/jaw/jaw.c) ([README.md](/1990/jaw/README.md]))
|
||||||
|
|
||||||
@@ -1050,6 +1056,9 @@ something else and is recommended by the author as well.
|
|||||||
[Yusuke](#yusuke) suggested `-ansi` to get the entry to compile due to trigraphs and [Cody](#cody)
|
[Yusuke](#yusuke) suggested `-ansi` to get the entry to compile due to trigraphs and [Cody](#cody)
|
||||||
suggested `-trigraphs`. Both work but we used Yusuke's idea.
|
suggested `-trigraphs`. Both work but we used Yusuke's idea.
|
||||||
|
|
||||||
|
Cody added the [try.sh](/1990/scjones/try.sh) script to show exactly what the
|
||||||
|
entry does.
|
||||||
|
|
||||||
|
|
||||||
## <a name="1990_tbr"></a>[1990/tbr](/1990/tbr/tbr.c) ([README.md](/1990/tbr/README.md]))
|
## <a name="1990_tbr"></a>[1990/tbr](/1990/tbr/tbr.c) ([README.md](/1990/tbr/README.md]))
|
||||||
|
|
||||||
@@ -1102,6 +1111,9 @@ with clang in Linux but which was defaulting to an error. This way was the
|
|||||||
simplest way to deal with the problem in question due to the way the entry
|
simplest way to deal with the problem in question due to the way the entry
|
||||||
works.
|
works.
|
||||||
|
|
||||||
|
Cody also added the [try.sh](/1990/theorem/try.sh) script which shows the
|
||||||
|
original program and some of the programs it generates.
|
||||||
|
|
||||||
[Yusuke](#yusuke) pointed out that `atof` nowadays needs `#include <stdlib.h>` which was
|
[Yusuke](#yusuke) pointed out that `atof` nowadays needs `#include <stdlib.h>` which was
|
||||||
used in order to get this to work initially (prior to this output was there but
|
used in order to get this to work initially (prior to this output was there but
|
||||||
incomplete).
|
incomplete).
|
||||||
@@ -1129,6 +1141,8 @@ often be the same (for the purpose of `clang`?).
|
|||||||
He also fixed the code to not enter an infinite loop if arg is a number not > 0
|
He also fixed the code to not enter an infinite loop if arg is a number not > 0
|
||||||
and to not crash if no arg is specified.
|
and to not crash if no arg is specified.
|
||||||
|
|
||||||
|
Cody also added the [try.sh](/1990/westley/try.sh) script.
|
||||||
|
|
||||||
The alt code did NOT have arg checks added as it is actually a copy of the
|
The alt code did NOT have arg checks added as it is actually a copy of the
|
||||||
original code.
|
original code.
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user