diff --git a/1992/gson/README.md b/1992/gson/README.md index 2b246b7d9..158149c97 100644 --- a/1992/gson/README.md +++ b/1992/gson/README.md @@ -21,7 +21,7 @@ For more detailed information see [1992/gson in bugs.html](../../bugs.html#1992_ ## To use: ``` - ./ag word word2 word3 < dictionary + ./ag word word2 word3 < dictionary | less ``` @@ -31,31 +31,25 @@ For more detailed information see [1992/gson in bugs.html](../../bugs.html#1992_ ./try.sh ``` -This script will determine (or try and determine) where your system dictionary -is located and assuming that it can find one it'll use that. It checks the -following locations though the last one is more ironic: +The script first will use the [mkdict.sh](%%REPO_URL%%/1992/gson/mkdict.sh) script to create +a dictionary file out of the files +[README.md](%%REPO_URL%%/1992/gson/README.md), +[try.sh](%%REPO_URL%%/1992/gson/try.sh) (itself) and +[Makefile](%%REPO_URL%%/1992/gson/Makefile) runs the program with a number of +strings on that dictionary file. + +Then the script will determine (or try and determine) where your system +dictionary is located and assuming that it can find one it'll use that. It +checks the following locations though the last one is more ironic: * `/usr/share/dict/words` * `/usr/share/lib/spell/words` * `/usr/ucblib/dict/words` * `/dev/null` # <-- for machines with nothing to say -Then it runs the program with the following strings, using the proper dictionary -file: - -* `free software foundation` -* `obfuscated c contest` -* `unix international` -* `george bush` -* `bill clinton` -* `ross perot` -* `paul e tsongas` - -Then it uses the [mkdict.sh](%%REPO_URL%%/1992/gson/mkdict.sh) script to create a dictionary file out -of the files [README.md](README.md), [try.sh](%%REPO_URL%%/1992/gson/try.sh) (itself) and -[Makefile](%%REPO_URL%%/1992/gson/Makefile) and it repeats the same process as above. In the case no -dictionary file can be found in the first step it only runs the commands once -with the created dictionary file. +If a file is found then it will run the same process as above. The reason the +made up dictionary is used first is it provides shorter and a bit more fun +output. ## Judges' remarks: @@ -71,7 +65,7 @@ dictionaries which has been put in as [mkdict.sh](%%REPO_URL%%/1992/gson/mkdict. cat README.md | ./mkdict.sh > words ``` -Then try using the program as shown above with the file `words`. +Then try using the program [as shown above](#to-use) with the file `words`. ## Author's remarks: diff --git a/1992/gson/index.html b/1992/gson/index.html index 6c3b3f914..b1baa36b9 100644 --- a/1992/gson/index.html +++ b/1992/gson/index.html @@ -419,34 +419,27 @@ some invocations to crash in some systems.
For more detailed information see 1992/gson in bugs.html.
./ag word word2 word3 < dictionary
+ ./ag word word2 word3 < dictionary | less
./try.sh
-This script will determine (or try and determine) where your system dictionary -is located and assuming that it can find one it’ll use that. It checks the -following locations though the last one is more ironic:
+The script first will use the mkdict.sh script to create +a dictionary file out of the files +README.md, +try.sh (itself) and +Makefile runs the program with a number of +strings on that dictionary file.
+Then the script will determine (or try and determine) where your system +dictionary is located and assuming that it can find one it’ll use that. It +checks the following locations though the last one is more ironic:
/usr/share/dict/words/usr/share/lib/spell/words/usr/ucblib/dict/words/dev/null # <– for machines with nothing to sayThen it runs the program with the following strings, using the proper dictionary -file:
-free software foundationobfuscated c contestunix internationalgeorge bushbill clintonross perotpaul e tsongasThen it uses the mkdict.sh script to create a dictionary file out -of the files README.md, try.sh (itself) and -Makefile and it repeats the same process as above. In the case no -dictionary file can be found in the first step it only runs the commands once -with the created dictionary file.
+If a file is found then it will run the same process as above. The reason the +made up dictionary is used first is it provides shorter and a bit more fun +output.
Recently some newspapers printed amusing anagrams of one of the names listed above. Run this program to find the anagrams they @@ -454,7 +447,7 @@ weren’t allowed to print!
The author provided an obfuscated script that can be used to construct dictionaries which has been put in as mkdict.sh. To use try:
cat README.md | ./mkdict.sh > words
-Then try using the program as shown above with the file words.
Then try using the program as shown above with the file words.
The name of the game:
AG is short for either Anagram Generator or simply AnaGram. It might also be
diff --git a/1992/gson/try.sh b/1992/gson/try.sh
index b61718849..897c75fed 100755
--- a/1992/gson/try.sh
+++ b/1992/gson/try.sh
@@ -15,8 +15,51 @@ make CC="$CC" all >/dev/null || exit 1
# clear screen after compilation so that only the entry is shown
clear
-# attempt to find a dictionary file if DICT unset or not a regular readable file
+ag()
+{
+ if [[ "$#" -lt 2 ]]; then
+ echo "$0: ag() requires at least two args, given: $#" 1>&2
+ return
+ fi
+
+ echo "$ ./ag -5 ${*:2} < $1" 1>&2
+ read -r -n 1 -p "Press any key to continue (space = next page, q = quit): "
+ echo 1>&2
+ ./ag -5 "${@:2}" < "$1" 2>/dev/null | less -rEXF
+
+ echo 1>&2
+}
+
+# try making our own dictionary with mkdict.sh:
#
+rm -f words
+cat index.html README.md try.sh Makefile | ./mkdict.sh > words
+DICT="words"
+
+# safety check that DICT is not empty and is a readable file
+#
+if [[ -n "$DICT" && -f "$DICT" && -r "$DICT" ]]; then
+ read -r -n 1 -p "Press any key to use our own dict from mkdict.sh: "
+ echo 1>&2
+ ag "$DICT" free software foundation
+ ag "$DICT" free software foundations
+ ag "$DICT" obfuscated c contest
+ ag "$DICT" obfuscated c contests
+ ag "$DICT" unix international
+ ag "$DICT" george bush
+ ag "$DICT" ross perot
+ ag "$DICT" paul e tsongas
+ ag "$DICT" bill gates
+ ag "$DICT" microsoft conspiracy
+ ag "$DICT" international microsoft conspiracy
+fi
+
+# now attempt to find a dictionary file if DICT unset or not a regular readable file
+#
+echo "Will now try locating system dictionary." 1>&2
+read -r -n 1 -p "Press any key to continue: "
+echo 1>&2
+DICT=""
if [[ -z "$DICT" || ! -f "$DICT" || ! -r "$DICT" ]]; then
DICT="/usr/share/dict/words"
@@ -33,45 +76,27 @@ if [[ -z "$DICT" || ! -f "$DICT" || ! -r "$DICT" ]]; then
fi
fi
-ag()
-{
- if [[ "$#" -lt 2 ]]; then
- echo "$0: ag() requires at least two args, given: $#" 1>&2
- return
- fi
-
- echo "$ ./ag ${*:2} < $1" 1>&2
- read -r -n 1 -p "Press any key to continue (space = next page, q = quit): "
- echo 1>&2
- ./ag "${@:2}" < "$1" 2>/dev/null | less -rEXF
-
- echo 1>&2
-}
# safety check that DICT is not empty and is a readable file
#
if [[ -n "$DICT" && -f "$DICT" && -r "$DICT" ]]; then
+ echo "Using $DICT as dictionary file." 1>&2
+ read -r -n 1 -p "Press any key to continue: "
+ echo 1>&2
ag "$DICT" free software foundation
+ ag "$DICT" free software foundations
ag "$DICT" obfuscated c contest
+ ag "$DICT" obfuscated c contests
ag "$DICT" unix international
ag "$DICT" george bush
ag "$DICT" bill clinton
ag "$DICT" ross perot
ag "$DICT" paul e tsongas
+ ag "$DICT" pauline hansen
+ ag "$DICT" bill gates
+ ag "$DICT" microsoft windows
+ read -r -n 1 -p "This next one can take some time. Do you want to run it anyway (Y/N)? "
+ echo 1>&2
+ if [[ "$REPLY" = "y" || "$REPLY" = "Y" ]]; then
+ ag "$DICT" international microsoft conspiracy
+ fi
fi
-
-# now try making our own dictionary with mkdict.sh:
-#
-rm -f words
-cat README.md try.sh Makefile | ./mkdict.sh > words
-DICT="words"
-
-read -r -n 1 -p "Press any key to use our own dict from mkdict.sh: "
-echo 1>&2
-ag "$DICT" free software foundation
-ag "$DICT" obfuscated c contest
-ag "$DICT" unix international
-ag "$DICT" george bush
-ag "$DICT" bill clinton
-ag "$DICT" ross perot
-ag "$DICT" paul e tsongas
-