Add 1990/theorem/try.sh

This script shows not just theorem but the sorter and the Fibonacci
generator as well. For the sorter it reverses output of ls (redirected
to a file) and then shows how using sorter on it results in the same
output of ls (with no options specified). Of course if different ls
sorts output differently this could fail but I did not think of that
until after I wrote it.
This commit is contained in:
Cody Boone Ferguson committed 2024-01-12 09:51:14 -08:00
1 parent fd57e523bf
commit 2bdf97ec41
4 files changed
+86 -12

No files matched your search

+1 -1
View File
@@ -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-macro-redefined -Wno-parentheses -Wno-return-type -Wno-unused-parameter \
-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
#
+6 -11
View File
@@ -36,20 +36,10 @@ y1 - initial value (y(x1) == y1)
### Try:
```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:
@@ -113,6 +103,11 @@ make fibonacci
./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
knife](https://ginsu.com) nor [Swiss army
knife](https://en.wikipedia.org/wiki/Swiss_Army_knife) included! :-)
+76
View File
@@ -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
+3
View File
@@ -1111,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
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
used in order to get this to work initially (prior to this output was there but
incomplete).