4 files changed
+70
-16
No files matched your search
@@ -1,3 +1,6 @@
|
|||||||
atob
|
atob
|
||||||
jaw
|
jaw
|
||||||
zcat
|
zcat
|
||||||
|
receive
|
||||||
|
unshark
|
||||||
|
unshark.c
|
||||||
+23
-14
@@ -21,17 +21,33 @@
|
|||||||
|
|
||||||
## To build:
|
## To build:
|
||||||
|
|
||||||
make all
|
make all
|
||||||
|
|
||||||
|
|
||||||
|
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed the script to
|
||||||
|
work properly in modern environments (to do with PATH not having '.' in it). He
|
||||||
|
notes that with an invocation in the try section below you will with macOS get
|
||||||
|
what appears to be an error message but is actually okay. He gives more
|
||||||
|
information in the [bugs.md](/bugs.md) file. Thank you Cody for the help and
|
||||||
|
notes!
|
||||||
|
|
||||||
NOTE: as `btoa` is not common we used a ruby script from [Yusuke
|
NOTE: as `btoa` is not common we used a ruby script from [Yusuke
|
||||||
Endoh](/winners.html#Yusuke_Endoh). Thank you Yusuke for your implementation of
|
Endoh](/winners.html#Yusuke_Endoh). Thank you Yusuke for your implementation of
|
||||||
`btoa`!
|
`btoa`!
|
||||||
|
|
||||||
|
|
||||||
### Try:
|
### Try:
|
||||||
|
|
||||||
|
To test the official C entry, one might try:
|
||||||
|
|
||||||
echo "Quartz glyph jocks vend, fix, BMW." | compress | ./btoa | ./jaw
|
echo "Quartz glyph jocks vend, fix, BMW." | compress | ./btoa | ./jaw
|
||||||
|
|
||||||
NOTE: part of this entry does not work under macOS.
|
which should apply the identity transformation to a minimal
|
||||||
|
holoalphabetic sentence.
|
||||||
|
|
||||||
|
NOTE: Cody notes the above will not work under macOS. The `sh shark.sh jaw.*
|
||||||
|
README.md > receive` and following commands below do work with macOS after the
|
||||||
|
fixes he made.
|
||||||
|
|
||||||
|
|
||||||
## Judges' comments:
|
## Judges' comments:
|
||||||
@@ -42,30 +58,23 @@ The program, in its base form, implements two useful utilities:
|
|||||||
atob - ascii to binary conversion
|
atob - ascii to binary conversion
|
||||||
zcat - decompression filter
|
zcat - decompression filter
|
||||||
|
|
||||||
To test the official C entry, one might try:
|
|
||||||
|
|
||||||
echo "Quartz glyph jocks vend, fix, BMW." | compress | ./btoa | ./jaw
|
|
||||||
|
|
||||||
which should apply the identity transformation to a minimal
|
|
||||||
holoalphabetic sentence.
|
|
||||||
|
|
||||||
Included with this entry is a shell script (with comments edited down
|
Included with this entry is a shell script (with comments edited down
|
||||||
to reduce it to 1530 bytes) which implements the complete
|
to reduce it to 1530 bytes) which implements the complete
|
||||||
shark utility. The script, shark.sh, contains a 'jaw.c' embedded
|
shark utility. The script, shark.sh, contains a 'jaw.c' embedded
|
||||||
within it!
|
within it!
|
||||||
|
|
||||||
The sender must have 'compress' and 'btoa'. To send, try:
|
The sender must have `compress` and `btoa`. To send, try:
|
||||||
|
|
||||||
sh shark.sh jaw.* > receive
|
sh shark.sh jaw.* README.md > receive
|
||||||
|
|
||||||
The resulting file, 'receive', unpacks the input files
|
The resulting file, 'receive', unpacks the input files
|
||||||
even if the receiver lacks 'uncompress' and 'btoa':
|
even if the receiver lacks `uncompress` and `btoa`:
|
||||||
|
|
||||||
mkdir test
|
mkdir -p test
|
||||||
cd test
|
cd test
|
||||||
sh ../receive
|
sh ../receive
|
||||||
cmp ../jaw.c jaw.c
|
cmp ../jaw.c jaw.c
|
||||||
cmp ../jaw.hint jaw.hint
|
cmp ../README.md README.md
|
||||||
|
|
||||||
## Authors' comments:
|
## Authors' comments:
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -10,7 +10,7 @@ for i in "${@?${usage?$0 file...}}";do<"$i"||exit;done
|
|||||||
# "Cleverly he dialed from within." -- D. Van Vliet, "Trout Mask Replica"
|
# "Cleverly he dialed from within." -- D. Van Vliet, "Trout Mask Replica"
|
||||||
#
|
#
|
||||||
PATH=$PATH:. a=atob m=unshark z=zcat
|
PATH=$PATH:. a=atob m=unshark z=zcat
|
||||||
r="rm -f $a $m* $z" v="cc -o $z $m.c"
|
r="rm -f $a $m* $z" v="cc -Wno-implicit-function-declaration -o $z $m.c"
|
||||||
trap "$r;exit 1" 1 2 13 15
|
trap "$r;exit 1" 1 2 13 15
|
||||||
echo decoding...
|
echo decoding...
|
||||||
(:|compress|./btoa|$a|$z)2>$m>&2||(sed '1,9s/./#define & /
|
(:|compress|./btoa|$a|$z)2>$m>&2||(sed '1,9s/./#define & /
|
||||||
@@ -43,5 +43,5 @@ Z,h@=w;n=8;f=Q+e;i=o=HIo<0)X,1;P(i)WH+1){Iw==Q&e){Z;m=n=8;f=QIH<0)X}
|
|||||||
c=wIw>=f)U++=i,w=oWw>=Q)U++=h@,w=t@;P(i=h@)Wp>D+Q)P(*--p)
|
c=wIw>=f)U++=i,w=oWw>=Q)U++=h@,w=t@;P(i=h@)Wp>D+Q)P(*--p)
|
||||||
I(w=f)<1l<<k)t@=o,h[f++]=i;o=c}X}
|
I(w=f)<1l<<k)t@=o,h[f++]=i;o=c}X}
|
||||||
_
|
_
|
||||||
($v||$v -Mh)&&ln $z $a)&&$a<<\w>$m-&&$z<$m->$m&&tar xvf $m&&$r
|
($v)&&ln $z $a)&&$a<<\w>$m-&&$z<$m->$m&&tar xvf $m&&$r
|
||||||
Z
|
Z
|
||||||
@@ -20,6 +20,7 @@ you have one if you like).
|
|||||||
|
|
||||||
## Known bugs that are OK to fix
|
## Known bugs that are OK to fix
|
||||||
|
|
||||||
|
|
||||||
### [1995/cdua](1995/cdua/cdua.c) ([README.md](1995/cdua/README.md))
|
### [1995/cdua](1995/cdua/cdua.c) ([README.md](1995/cdua/README.md))
|
||||||
|
|
||||||
This did not compile under macOS and after it did it crashed.
|
This did not compile under macOS and after it did it crashed.
|
||||||
@@ -103,6 +104,47 @@ Vax-11 or pdp-11. In 1984 machine dependent code was allowed.
|
|||||||
This entry is known to segfault after printing its output. It was documented by
|
This entry is known to segfault after printing its output. It was documented by
|
||||||
the judges and needn't be fixed.
|
the judges and needn't be fixed.
|
||||||
|
|
||||||
|
### [1990/jaw](1990/jaw/jaw.c) ([README.md](1990/jaw/README.md))
|
||||||
|
|
||||||
|
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed the scripts to
|
||||||
|
work in modern systems. He notes however that the command in the try section,
|
||||||
|
the one to test the official C entry, appear to not work with macOS, giving:
|
||||||
|
|
||||||
|
|
||||||
|
$ echo "Quartz glyph jocks vend, fix, BMW." | compress | ./btoa | ./jaw
|
||||||
|
oops: Undefined error: 0
|
||||||
|
oops: Undefined error: 0
|
||||||
|
|
||||||
|
|
||||||
|
However this is because the entry uses `perror()` and it just so happens that
|
||||||
|
the default `errno` gives that result. For instance if you run the following C
|
||||||
|
program under macOS you will get undefined error but if you do it under linux
|
||||||
|
you'll likely get success.
|
||||||
|
|
||||||
|
|
||||||
|
```c
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <string.h>
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
errno = 0;
|
||||||
|
printf("%d, %s\n", errno, strerror(errno));
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
In fact the condition which is in the `a()` function on line 18 of the entry
|
||||||
|
namely:
|
||||||
|
|
||||||
|
I k>16)
|
||||||
|
|
||||||
|
is true on both linux and macOS, with `k` being equal to 22.
|
||||||
|
|
||||||
|
Should the entry use `perror()`? Perhaps not but we're not sure of its purpose
|
||||||
|
so it can stay for now with this note.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### [1996/westley](1996/westley/westley.c) ([README.md](1996/westley/README.md))
|
### [1996/westley](1996/westley/westley.c) ([README.md](1996/westley/README.md))
|
||||||
|
|
||||||
This entry will possibly segfault even when showing the proper output in the
|
This entry will possibly segfault even when showing the proper output in the
|
||||||
|
|||||||
Reference in new issue
Block a user