diff --git a/1994/weisberg/README.md b/1994/weisberg/README.md index dd038ea76..3d98f7abc 100644 --- a/1994/weisberg/README.md +++ b/1994/weisberg/README.md @@ -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: diff --git a/1994/weisberg/primes.sh b/1994/weisberg/primes.sh new file mode 100755 index 000000000..c9b490fe0 --- /dev/null +++ b/1994/weisberg/primes.sh @@ -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 diff --git a/1994/weisberg/try.sh b/1994/weisberg/try.sh new file mode 100755 index 000000000..b12a3d2e0 --- /dev/null +++ b/1994/weisberg/try.sh @@ -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 diff --git a/thanks-for-help.md b/thanks-for-help.md index cf32259c5..827418c81 100644 --- a/thanks-for-help.md +++ b/thanks-for-help.md @@ -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. + ## [1994/westley](/1994/westley/westley.c) ([README.md](/1994/westley/README.md]))