Add 2001/schweikh/try.sh + format/typo checks

This commit is contained in:
Cody Boone Ferguson committed 2023-11-16 09:09:41 -08:00
1 parent 0496a69ca5
commit be64048e3d
3 files changed
+34 -9

No files matched your search

+7 -9
View File
@@ -41,9 +41,7 @@ That's not a bug, that's a feature.
### Try: ### Try:
```sh ```sh
./schweikh foo 'f??'; echo $? ./try.sh
./schweikh 'best short program' '??st*o**p?*'; echo $?
./schweikh bar 'f??'; echo $?
``` ```
@@ -64,7 +62,7 @@ the whole string, so you may want to use `*` at the beginning and end of the
pattern if you are looking for something in the middle. pattern if you are looking for something in the middle.
You can use it for your shell scripting needs similar to a silent grep You can use it for your shell scripting needs similar to a silent grep
(and without stdout redirected to `/dev/null`): (and without `stdout` redirected to `/dev/null`):
```sh ```sh
if prog "${VARIABLE}" '<glob>'; then if prog "${VARIABLE}" '<glob>'; then
@@ -83,15 +81,15 @@ All obfuscation is obviously in the recursive `m()` function, an 86
character glob pattern evaluator, returning nonzero for a match: character glob pattern evaluator, returning nonzero for a match:
* Just a single complex return expression. * Just a single complex return expression.
* Nested ternary operator `?:` to save on if/else verbosity. * Nested ternary operator `?:` to save on `if`/`else` verbosity.
* Short circuiting `&&` and `||` to save even more on if/else verbosity. * Short circuiting `&&` and `||` to save even more on `if`/`else` verbosity.
* Subtraction instead of an equality operator in `*t - 42`. * Subtraction instead of an equality operator in `*t - 42`.
* ASCII codes for `*` and `?`. * ASCII codes for `*` and `?`.
* Careful use of blanks even though this year's rules have extended * Careful use of blanks even though this year's rules have extended
that resource limit. that resource limit.
* The source is a complete preprocessed C program. Because it communicates * The source is a complete preprocessed C program. Because it communicates
with the world out there by means of argv and the exit status, there with the world out there by means of `argv` and the exit status, there
is no need for stdio bloat. An asm guru could surely squeeze this is no need for `stdio.h` bloat. An asm guru could surely squeeze this
program in less than a screenful. program in less than a screenful.
* `indent(1)` is probably not too helpful. * `indent(1)` is probably not too helpful.
@@ -101,7 +99,7 @@ backtracking. I could tell you how it works but then I would have to
inputs, it will be quite helpful and instructive. Handling of `?` is inputs, it will be quite helpful and instructive. Handling of `?` is
straightforward; for `*` start out with `*foo` and `foo*` against `foo`. straightforward; for `*` start out with `*foo` and `foo*` against `foo`.
How does it deal with sequences of adjacent `*`? How could this be How does it deal with sequences of adjacent `*`? How could this be
improved? If all else fails, recode the `?:` operators with if/else and improved? If all else fails, recode the `?:` operators with `if`/`else` and
try again. For extra credit implement character classes like `[a-z]`. try again. For extra credit implement character classes like `[a-z]`.
+25
View File
@@ -0,0 +1,25 @@
#!/usr/bin/env bash
#
# try.sh - demonstrate IOCCC winner 2001/schweikh
#
# 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
echo "$ ./schweikh foo 'f??'; echo \$?" 1>&2
./schweikh foo 'f??'; echo $?
echo "$ ./schweikh 'best short program' '??st*o**p?*'; echo \$?" 1>&2
./schweikh 'best short program' '??st*o**p?*'; echo $?
echo "$ ./schweikh bar 'f??'; echo \$?" 1>&2
./schweikh bar 'f??'; echo $?
+2
View File
@@ -2587,6 +2587,8 @@ Cody fixed this to not crash if not enough args as this was not documented by
the author. The other problems are documented so were not fixed. See the author. The other problems are documented so were not fixed. See
README.md for details. README.md for details.
Cody also added the [try.sh](2001/schweikh/try.sh) script.
## [2001/westley](2001/westley/westley.c) ([README.md](2001/westley/README.md])) ## [2001/westley](2001/westley/westley.c) ([README.md](2001/westley/README.md]))