Merge pull request #1639 from xexyl/vik14
This commit is contained in:
5 files changed
+89
-16
No files matched your search
@@ -1,2 +1,6 @@
|
||||
prog
|
||||
prog.orig
|
||||
hello.c
|
||||
hello
|
||||
ioccc.c
|
||||
ioccc
|
||||
@@ -32,6 +32,7 @@ in the DNA code of the code? Perhaps there are 23 reasons? :-)
|
||||
|
||||
## Author's remarks:
|
||||
|
||||
|
||||
### Remarks
|
||||
|
||||
This chromosome program synthesizes a double helix.
|
||||
@@ -39,14 +40,16 @@ The helix can also be compiled as a C program.
|
||||
|
||||
Enjoy DNA programming!
|
||||
|
||||
### For more information / backgroud reading:
|
||||
|
||||
### For more information / background reading:
|
||||
|
||||
* This program was inspired by Acme::DoubleHelix:
|
||||
http://search.cpan.org/~xern/Acme-DoubleHelix-0.01/
|
||||
<http://search.cpan.org/~xern/Acme-DoubleHelix-0.01/>
|
||||
|
||||
* The synthesized helix just includes the original program at the head.
|
||||
Do you see how `prog.c` determines whether it was invoked as a standalone program or included as a header file?
|
||||
Note that it does not use any gcc extension such as `__INCLUDE_LEVEL__`.
|
||||
Do you see how [prog.c](prog.c) determines whether it was invoked as a
|
||||
standalone program or included as a header file? Note that it does not use any
|
||||
gcc extension such as `__INCLUDE_LEVEL__`.
|
||||
|
||||
* The synthesized helix of course follows the base-pairing rules for DNA:
|
||||
A is bonding only to T, and C is bonding only to G.
|
||||
|
||||
Executable
+52
@@ -0,0 +1,52 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# try.sh - demonstrate IOCCC winner 2014/endoh2
|
||||
#
|
||||
|
||||
# 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 run: echo Hello | ./prog: "
|
||||
echo 1>&2
|
||||
echo Hello | ./prog
|
||||
echo 1>&2
|
||||
|
||||
read -r -n 1 -p "Press any key to run: echo IOCCC | ./prog: "
|
||||
echo 1>&2
|
||||
echo IOCCC | ./prog
|
||||
echo 1>&2
|
||||
|
||||
read -r -n 1 -p "Press any key to run: echo Hello | ./prog > hello.c: "
|
||||
echo 1>&2
|
||||
echo Hello | ./prog > hello.c
|
||||
echo 1>&2
|
||||
|
||||
read -r -n 1 -p "Press any key to compile hello.c: "
|
||||
echo 1>&2
|
||||
make hello >/dev/null
|
||||
echo 1>&2
|
||||
read -r -n 1 -p "Press any key to run: ./hello: "
|
||||
./hello
|
||||
echo 1>&2
|
||||
|
||||
read -r -n 1 -p "Press any key to run: echo IOCCC | ./prog > ioccc.c: "
|
||||
echo 1>&2
|
||||
echo IOCCC | ./prog > ioccc.c
|
||||
echo 1>&2
|
||||
|
||||
read -r -n 1 -p "Press any key to compile ioccc.c: "
|
||||
echo 1>&2
|
||||
make ioccc >/dev/null
|
||||
echo 1>&2
|
||||
read -r -n 1 -p "Press any key to run: ./ioccc: "
|
||||
echo 1>&2
|
||||
./ioccc
|
||||
+21
-12
@@ -4,6 +4,10 @@
|
||||
make
|
||||
```
|
||||
|
||||
There is an alternate version that will theoretically work with Windows
|
||||
compilers (if anything in Windows works :-) ). See the [Alternate
|
||||
code](#alternate-code) section below.
|
||||
|
||||
|
||||
### Bugs and (Mis)features:
|
||||
|
||||
@@ -22,10 +26,6 @@ For more detailed information see [2014 vik in bugs.md](/bugs.md#2014-vik).
|
||||
./prog > foo.c
|
||||
```
|
||||
|
||||
There is an alternate version that will theoretically work with Windows
|
||||
compilers (if anything in Windows works :-) ). See the [Alternate
|
||||
code](#alternate-code) section below.
|
||||
|
||||
|
||||
### Try:
|
||||
|
||||
@@ -39,13 +39,19 @@ echo 'No. I want chocolate!' | ./prog | mplayer -demuxer rawaudio -
|
||||
## Alternate code:
|
||||
|
||||
The alternate code, [prog.alt.c](prog.alt.c), is based on the author's
|
||||
instructions on how to get it to work with Windows. This has not been tested but
|
||||
in order to use it you can do:
|
||||
instructions on how to get it to work with Windows.
|
||||
|
||||
|
||||
### Alternate build:
|
||||
|
||||
|
||||
```sh
|
||||
make alt
|
||||
```
|
||||
|
||||
|
||||
### Alternate use:
|
||||
|
||||
Use `prog.alt` as you would `prog` above as well as below.
|
||||
|
||||
|
||||
@@ -70,15 +76,16 @@ might help? :-)
|
||||
|
||||
## Author's remarks:
|
||||
|
||||
|
||||
### Remarks
|
||||
|
||||
This program converts ascii text to Morse audio file and vice versa. As far as
|
||||
This program converts ASCII text to Morse audio file and vice versa. As far as
|
||||
I can tell, there are at least six chocolate references in this program.
|
||||
|
||||
This program can convert text to Morse to a raw 44.1kHz stereo audio file.
|
||||
Via streaming to mplayer, you can listen to the Morse audio.
|
||||
Via streaming to `mplayer(1)`, you can listen to the Morse audio.
|
||||
|
||||
Don't forget the last '`-`' as it makes mplayer read from stdin.
|
||||
Don't forget the last '`-`' as it makes `mplayer(1)` read from `stdin`.
|
||||
|
||||
|
||||
## Convert audio file with Morse signals to text
|
||||
@@ -92,14 +99,15 @@ or alternatively pass a .wav file as input.
|
||||
The preferred input format 44.1kHz stereo, but it does a decent job on mono
|
||||
input and different frequencies as well.
|
||||
|
||||
|
||||
### Portability
|
||||
|
||||
The program is portable to most platforms. The only system dependency is that
|
||||
the program relies on writing binary data to stdout.
|
||||
the program relies on writing binary data to `stdout`.
|
||||
|
||||
Microsoft compilers add a carriage return to newlines, and to compile the
|
||||
program with this platform, the following line can be added after the main
|
||||
declaration in order for the program to run correctly:
|
||||
program with this platform, the following line can be added to `main()` before
|
||||
any code in order for the program to run correctly:
|
||||
|
||||
```c
|
||||
_setmode(_fileno(stdout), 0x8000);
|
||||
@@ -107,6 +115,7 @@ _setmode(_fileno(stdout), 0x8000);
|
||||
|
||||
NOTE: see the [alternate code](prog.alt.c) for this.
|
||||
|
||||
|
||||
### Known Issues
|
||||
|
||||
The program uses a quite simple algorithm for detecting tone on and off events
|
||||
|
||||
@@ -3705,6 +3705,11 @@ file to [spoilers.md](2014/endoh1/spoilers.md) to be clearer in its purpose as
|
||||
it is a file with spoilers (and too close to README.md?).
|
||||
|
||||
|
||||
## [2014/endoh2](2014/endoh2/prog.c) ([README.md](2014/endoh2/README.md]))
|
||||
|
||||
[Cody](#cody) added the [try.sh](2014/endoh2/try.sh) script.
|
||||
|
||||
|
||||
## [2014/maffiodo1](2014/maffiodo1/prog.c) ([README.md](2014/maffiodo1/README.md]))
|
||||
|
||||
[Cody](#cody) fixed the build for this entry: it does not require
|
||||
|
||||
Reference in new issue
Block a user