Add 1994/weisberg/try.sh and primes.sh
The primes.sh script is like 1985/august/primes.sh but it only acts on reversed output (if rev(1) is installed) of the weisberg because weisberg actually prints out primes so there's no point doing it without reversing it. One can specify the number of lines to reverse (not how many primes to show) by passing an arg to the script. The try.sh script uses the default (15) and also 25.
This commit is contained in:
1 parent
e5c062d27d
commit
2daa0822f6
4 files changed
+111
-2
No files matched your search
+11
-2
@@ -5,7 +5,7 @@ make all
|
||||
```
|
||||
|
||||
There is an alternate version that uses more memory. See [alternate
|
||||
code](#alternate-code) below.
|
||||
code](#alternate-code) below for more details.
|
||||
|
||||
|
||||
## To use:
|
||||
@@ -18,9 +18,18 @@ code](#alternate-code) below.
|
||||
## Try:
|
||||
|
||||
```sh
|
||||
./weisberg | head -n 15
|
||||
./try.sh
|
||||
```
|
||||
|
||||
If you have `primes(1)` installed you might also wish to try:
|
||||
|
||||
```sh
|
||||
./primes.sh number
|
||||
```
|
||||
|
||||
where `number` is a positive number, defaulting to 15. The [try.sh](try.sh)
|
||||
script will also do this.
|
||||
|
||||
|
||||
## Alternate code:
|
||||
|
||||
|
||||
Executable
+40
@@ -0,0 +1,40 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# primes.sh - feed primes(1) IOCCC winner 1994/weisberg
|
||||
#
|
||||
|
||||
# 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
|
||||
|
||||
PRIMES=$(type -P primes)
|
||||
|
||||
COUNT=15
|
||||
if [[ "$#" -ge 1 ]]; then
|
||||
COUNT="$1"
|
||||
if ! [[ $COUNT =~ ^[0-9]+$ ]]; then
|
||||
echo "not a number: $COUNT" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
REV="$(type -P rev)"
|
||||
if [[ -n "$PRIMES" && -n "$REV" ]]; then
|
||||
read -r -n 1 -p "Press any key to find primes in ./weisberg | head -n $COUNT, reversed: "
|
||||
echo 1>&2
|
||||
while read -r n; do primes "$n" $((n + 1)); done < <((./weisberg | head -n "$COUNT" | "$REV" ))
|
||||
else
|
||||
echo "primes not installed" 1>&2
|
||||
echo 1>&2
|
||||
echo "See the following GitHub repo:" 1>&2
|
||||
echo 1>&2
|
||||
echo " https://github.com/vattam/BSDGames" 1>&2
|
||||
echo 1>&2
|
||||
echo "and after installing it try running this again."
|
||||
exit 1
|
||||
fi
|
||||
Executable
+53
@@ -0,0 +1,53 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# try.sh - demonstrate IOCCC winner 1994/weisberg
|
||||
#
|
||||
|
||||
# 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
|
||||
|
||||
REV="$(type -P rev)"
|
||||
|
||||
read -r -n 1 -p "Press any key to run: ./weisberg | head -n 15: "
|
||||
echo 1>&2
|
||||
./weisberg | head -n 15
|
||||
echo 1>&2
|
||||
|
||||
read -r -n 1 -p "Press any key to run: ./weisberg | head -n 42 (space = next page, q = quit): "
|
||||
echo 1>&2
|
||||
./weisberg | head -n 42 | less -rEXF
|
||||
echo 1>&2
|
||||
|
||||
if [[ -n "$REV" ]]; then
|
||||
echo 1>&2
|
||||
read -r -n 1 -p "Press any key to reverse ./weisberg | head -n 15: "
|
||||
echo 1>&2
|
||||
./weisberg | head -n 15 | "$REV"
|
||||
|
||||
read -r -n 1 -p "Press any key to reverse: ./weisberg | head -n 42 (space = next page, q = quit): "
|
||||
echo 1>&2
|
||||
./weisberg | head -n 42 | "$REV" | less -rEXF
|
||||
echo 1>&2
|
||||
fi
|
||||
|
||||
# run primes.sh too
|
||||
echo 1>&2
|
||||
read -r -n 1 -p "Press any key to run: ./primes.sh: "
|
||||
echo 1>&2
|
||||
./primes.sh
|
||||
echo 1>&2
|
||||
|
||||
read -r -n 1 -p "Press any key to run: ./primes.sh 25: "
|
||||
echo 1>&2
|
||||
./primes.sh 25
|
||||
echo 1>&2
|
||||
exit 0
|
||||
@@ -1948,6 +1948,13 @@ Note that the alt code does not use `fgets(3)` but rather `gets(3)`.
|
||||
use with other tools as well by making the program output not a space after each
|
||||
number but rather a newline.
|
||||
|
||||
Cody also added the scripts [try.sh](/1994/weisberg/try.sh) and
|
||||
[primes.sh](/1994/weisberg/primes.sh). The `primes.sh` script is used by
|
||||
`try.sh` and if both `primes(1)` and `rev(1)` are installed it will reverse the
|
||||
lines of the `weisberg`, feeding it to `primes(1)`, showing those that are
|
||||
primes. It only does the reversed output because the program actually prints
|
||||
primes.
|
||||
|
||||
|
||||
## <a name="1994_westley"></a>[1994/westley](/1994/westley/westley.c) ([README.md](/1994/westley/README.md]))
|
||||
|
||||
|
||||
Reference in new issue
Block a user