Add 2012/vik/try.sh + format/typo checks
The try.sh script includes the brainfuck feature that the author implemented.
This commit is contained in:
1 parent
d7e73b4f38
commit
4750077034
4 files changed
+85
-23
No files matched your search
@@ -1,3 +1,4 @@
|
|||||||
|
mmm-chocolate.png
|
||||||
chocolate-in-ioccc.png
|
chocolate-in-ioccc.png
|
||||||
encodedimg.png
|
encodedimg.png
|
||||||
ioccc-in-chocolate.png
|
ioccc-in-chocolate.png
|
||||||
|
|||||||
+19
-23
@@ -6,6 +6,9 @@ make
|
|||||||
|
|
||||||
This entry requires [Zlib](https://www.zlib.net).
|
This entry requires [Zlib](https://www.zlib.net).
|
||||||
|
|
||||||
|
There is an alternate version which might work for Windows. See [Alternate
|
||||||
|
code](#alternate-code) section below.
|
||||||
|
|
||||||
|
|
||||||
### Bugs and (Mis)features:
|
### Bugs and (Mis)features:
|
||||||
|
|
||||||
@@ -50,40 +53,28 @@ To extract the embedded PNG:
|
|||||||
./vik d encodedimg.png > restored.png
|
./vik d encodedimg.png > restored.png
|
||||||
```
|
```
|
||||||
|
|
||||||
There is an alternate version which might work for Windows. See Alternate code
|
|
||||||
section below.
|
|
||||||
|
|
||||||
The author stated that the program will crash if no argument is passed to the
|
|
||||||
program or if invalid arguments or images of mismatching sizes or unsupported
|
|
||||||
pixel formats though we note that your computer might also [halt and catch
|
|
||||||
fire](https://en.wikipedia.org/wiki/Halt_and_Catch_Fire_(computing)) :-)
|
|
||||||
|
|
||||||
This is supposed to happen. As is written in the
|
|
||||||
[The Jargon File](http://catb.org/jargon/html/F/feature.html):
|
|
||||||
|
|
||||||
```
|
|
||||||
That's not a bug, that's a feature.
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
### Try:
|
### Try:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
./vik e ioccc.png chocolate.png > chocolate-in-ioccc.png
|
./try.sh
|
||||||
./vik e chocolate.png ioccc.png > ioccc-in-chocolate.png
|
|
||||||
./vik d chocolate-in-ioccc.png > restored-chocolate.png
|
|
||||||
./vik d ioccc-in-chocolate.png > restored-ioccc.png
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
## Alternate code:
|
## Alternate code:
|
||||||
|
|
||||||
For those few who might use Windows, To compile:
|
For those few who might use Windows this alternate code might work.
|
||||||
|
|
||||||
|
|
||||||
|
### Alternate build:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
make alt
|
make alt
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### Alternate use:
|
||||||
|
|
||||||
Use `vik.alt` as you would `vik` above.
|
Use `vik.alt` as you would `vik` above.
|
||||||
|
|
||||||
|
|
||||||
@@ -114,6 +105,7 @@ one image into another, the width and height needs to be the same.
|
|||||||
The program only updates the `IDAT` and `IHDR` chunks of the source image. Any
|
The program only updates the `IDAT` and `IHDR` chunks of the source image. Any
|
||||||
additional chunks are copied into the resulting image.
|
additional chunks are copied into the resulting image.
|
||||||
|
|
||||||
|
|
||||||
### Bonus Extractor:
|
### Bonus Extractor:
|
||||||
|
|
||||||
For some reason the chocolate image seems to have some special properties.
|
For some reason the chocolate image seems to have some special properties.
|
||||||
@@ -146,15 +138,16 @@ or helper methods that can be confusing, I placed all functionality in the
|
|||||||
gives the benefit that all invocations of the function have the same parameters,
|
gives the benefit that all invocations of the function have the same parameters,
|
||||||
`argv` and `argc`. This really helps readability, as a programmer doesn't need
|
`argv` and `argc`. This really helps readability, as a programmer doesn't need
|
||||||
to remember several variable or function names. I also tried to reduce the
|
to remember several variable or function names. I also tried to reduce the
|
||||||
number of keywords, and the program only has four for-loops followed by a single
|
number of keywords, and the program only has four `for` loops followed by a single
|
||||||
return statement. There is a little bit of use of the ternary (`?:`) operator,
|
`return` statement. There is a little bit of use of the ternary (`?:`) operator,
|
||||||
but this is really there to keep the program as simple as possible.
|
but this is really there to keep the program as simple as possible.
|
||||||
|
|
||||||
|
|
||||||
### Portability
|
### Portability
|
||||||
|
|
||||||
The program is portable to most platforms that have [zlib](https://www.zlib.net)
|
The program is portable to most platforms that have [zlib](https://www.zlib.net)
|
||||||
available. The only system dependency is that the program relies on writing
|
available. The only system dependency is that the program relies on writing
|
||||||
binary data to stdout.
|
binary data to `stdout`.
|
||||||
|
|
||||||
By default, Microsoft compilers adds carriage returns to new lines, and to
|
By default, Microsoft compilers adds carriage returns to new lines, and to
|
||||||
compile the program on this platform, the following line can be added after
|
compile the program on this platform, the following line can be added after
|
||||||
@@ -165,6 +158,9 @@ correctly:
|
|||||||
_setmode(_fileno(stdout), 0x8000);
|
_setmode(_fileno(stdout), 0x8000);
|
||||||
```
|
```
|
||||||
|
|
||||||
|
NOTE: this is what the [Alternate code](#alternate-code) does.
|
||||||
|
|
||||||
|
|
||||||
### Limitations
|
### Limitations
|
||||||
|
|
||||||
The program doesn't have many error checks so passing in invalid arguments
|
The program doesn't have many error checks so passing in invalid arguments
|
||||||
|
|||||||
Executable
+63
@@ -0,0 +1,63 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# try.sh - demonstrate IOCCC winner 2012/vik
|
||||||
|
#
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to embed chocolate in chocolate-in-ioccc.png: "
|
||||||
|
echo 1>&2
|
||||||
|
echo "$ ./vik e chocolate-in-ioccc.png \"Mmm... chocolate.\" > mmm-chocolate.png" 1>&2
|
||||||
|
./vik e chocolate-in-ioccc.png "Mmm... chocolate." > mmm-chocolate.png
|
||||||
|
echo 1>&2
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to extract chocolate from mmm-chocolate.png: "
|
||||||
|
echo 1>&2
|
||||||
|
echo "$ ./vik d mmm-chocolate.png" 1>&2
|
||||||
|
./vik d mmm-chocolate.png
|
||||||
|
echo 1>&2
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to embed chocolate.png in ioccc.png: "
|
||||||
|
echo 1>&2
|
||||||
|
echo "$ ./vik e ioccc.png chocolate.png > chocolate-in-ioccc.png" 1>&2
|
||||||
|
./vik e ioccc.png chocolate.png > chocolate-in-ioccc.png
|
||||||
|
echo 1>&2
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to embed ioccc.png in chocolate.png: "
|
||||||
|
echo 1>&2
|
||||||
|
echo "$ ./vik e chocolate.png ioccc.png > ioccc-in-chocolate.png"
|
||||||
|
./vik e chocolate.png ioccc.png > ioccc-in-chocolate.png
|
||||||
|
echo 1>&2
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to embed a brainfuck program as a text file and decode it: "
|
||||||
|
echo 1>&2
|
||||||
|
echo "$ ./vik e ioccc.png .+[.+] > encodedimg.png" 1>&2
|
||||||
|
./vik e ioccc.png .+[.+] > encodedimg.png
|
||||||
|
echo "$ ./vik b encodedimg.png" 1>&2
|
||||||
|
./vik b encodedimg.png
|
||||||
|
echo 1>&2
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to extract chocolate from chocolate-in-ioccc.png: "
|
||||||
|
echo 1>&2
|
||||||
|
echo "$ ./vik d chocolate-in-ioccc.png > restored-chocolate.png" 1>&2
|
||||||
|
./vik d chocolate-in-ioccc.png > restored-chocolate.png
|
||||||
|
echo 1>&2
|
||||||
|
echo "Make sure to open restored-chocolate.png in your graphics viewer of choice!" 1>&2
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to extract ioccc from ioccc-in-chocolate.png: "
|
||||||
|
echo 1>&2
|
||||||
|
echo "$ ./vik d ioccc-in-chocolate.png > restored-ioccc.png" 1>&2
|
||||||
|
./vik d ioccc-in-chocolate.png > restored-ioccc.png
|
||||||
|
echo "Now make sure to open restored-ioccc.png in your graphics viewer of choice!" 1>&2
|
||||||
|
|
||||||
|
exit 0
|
||||||
@@ -3386,6 +3386,8 @@ this for the few who might use Windows.
|
|||||||
We're not sure whether we want to thank Cody or not for this :-) and he's not
|
We're not sure whether we want to thank Cody or not for this :-) and he's not
|
||||||
sure if he wants to be thanked either :-) but we appreciate it nonetheless.
|
sure if he wants to be thanked either :-) but we appreciate it nonetheless.
|
||||||
|
|
||||||
|
Cody also added the [try.sh](2012/vik/try.sh) script.
|
||||||
|
|
||||||
|
|
||||||
## [2012/zeitak](2012/zeitak/zeitak.c) ([README.md](2012/zeitak/README.md]))
|
## [2012/zeitak](2012/zeitak/zeitak.c) ([README.md](2012/zeitak/README.md]))
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user