diff --git a/2006/stewart/README.md b/2006/stewart/README.md
index 64235b6f9..b15059129 100644
--- a/2006/stewart/README.md
+++ b/2006/stewart/README.md
@@ -30,17 +30,18 @@ NOTE: `convert(1)` belongs to [ImageMagick](https://imagemagick.org/index.php).
## Try:
```sh
-./stewart 400 1000000 maze > maze.xbm
-convert maze.xbm maze.png
-
-./stewart 1024 1000000 gasket > gasket.xbm
-convert gasket.xbm gasket.png
-
-./stewart 1024 1500000 dragon3 > dragon3.xbm
-convert dragon3.xbm dragon3.png
+./try.sh
```
-Now open the images in your favourite graphics viewer or a web browser.
+After running the program on a few files it will ask you if you wish to run it
+on the remaining files.
+
+The script will try converting the xbm files created by the program to png
+files. If it does it will list those that exist in the directory, at the end of
+the script. If you do not have `convert(1)` it will warn you once. In that case
+you'll have to open the xbm files in a graphics viewer capable of viewing xbm
+images. In any case choose your favourite graphics viewer to look at the images
+created.
## Judges' remarks:
diff --git a/2006/stewart/try.sh b/2006/stewart/try.sh
new file mode 100755
index 000000000..1852b2a74
--- /dev/null
+++ b/2006/stewart/try.sh
@@ -0,0 +1,90 @@
+#!/usr/bin/env bash
+#
+# try.sh - demonstrate IOCCC winner 2006/stewart
+#
+
+# 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
+
+# try and find convert(1) from ImageMagick
+CONVERT="$(type -P convert)"
+# keep track if we converted anything
+CONVERTED=""
+FAILED_CONVERT=""
+
+stewart()
+{
+ if [[ "$#" != 3 ]]; then
+ echo "$0: stewart() expects 3 args, got: $#" 1>&2
+ return
+ fi
+
+ if [[ ! -f "$3" || ! -r "$3" ]]; then
+ echo "$0: file does not exist or not readable: $3" 1>&2
+ return
+ fi
+
+ if [[ -f "$3.xbm" ]]; then
+ rm -f "$3.xbm"
+ fi
+
+ read -r -n 1 -p "Press any key to run: ./stewart $1 $2 $3 > $3.xbm: "
+ echo 1>&2
+ ./stewart "$1" "$2" "$3" > "$3.xbm"
+ echo 1>&2
+
+ if [[ -n "$CONVERT" ]]; then
+ read -r -n 1 -p "Press any key to run: $CONVERT $3.xbm $3.png: "
+ echo 1>&2
+ "$CONVERT" "$3.xbm" "$3.png"
+ if [[ "$?" = 0 && -f "$3.png" ]]; then
+ echo "Converted $3.xbm to $3.png for you to view." 1>&2
+ CONVERTED="true"
+ else
+ FAILED_CONVERT="true"
+ fi
+ echo 1>&2
+ fi
+}
+
+# we only warn them once if they do not have convert
+if [[ -z "$CONVERT" ]]; then
+ echo "$0: convert(1) not found: you will have to find a viewer of xbm images." 1>&2
+fi
+
+stewart 400 1000000 maze
+stewart 1024 1000000 gasket
+stewart 1024 1500000 dragon3
+
+read -r -p "Do you want to run this on the remaining files (Y/N)? "
+echo 1>&2
+if [[ "$REPLY" = "Y" || "$REPLY" = "y" ]]; then
+ for f in altar box box2 box3 carpet circles cross cross2 cross3 crystal curve \
+ diamonds diamonds2 dragon dragon2 fern gasket_mod gasket_mod2 ioccc \
+ octagon pentagon pentagons rings rings2 spirals spirals2 spirals3 spirals4 \
+ squares stars stars2 tree tree2 tree3 tree4 triangle; do
+
+ stewart 1024 1000000 "$f"
+ done
+fi
+
+if [[ -n "$FAILED_CONVERT" ]]; then
+ echo "Failed to convert one or more files to png." 1>&2
+fi
+
+if [[ -n "$CONVERTED" ]]; then
+ echo "The following png files exist: "
+ ls -1 ./*.png
+else
+ echo "The following xbm files exist: "
+ ls -1 ./*.xbm
+fi
diff --git a/thanks-for-help.md b/thanks-for-help.md
index aa75671c2..ddaf57cbb 100644
--- a/thanks-for-help.md
+++ b/thanks-for-help.md
@@ -3488,8 +3488,11 @@ program in some systems he also added `-include ...` to the Makefile as well.
## [2006/stewart](/2006/stewart/stewart.c) ([README.md](/2006/stewart/README.md]))
-[Cody](#cody) fixed it so that if the file cannot be opened it exits rather than trying
-to read from the file.
+[Cody](#cody) added the [try.sh](/2006/stewart/try.sh) script.
+
+Cody also fixed it so that if the file cannot be opened it exits rather than trying
+to read from the file. This was done at a time when it was considered to be a
+bug to fix.
## [2006/sykes1](/2006/sykes1/sykes1.c) ([README.md](/2006/sykes1/README.md]))