Merge pull request #765 from xexyl/2014-birken

Add end to code block end in 2014/birken/README.md
This commit is contained in:
Landon Curt Noll authored and GitHub committed 2023-05-19 06:52:24 +10:00
commit 8deca9ae30
13 files changed
+92 -42

No files matched your search

+1
View File
@@ -1 +1,2 @@
plummer
plummer.alt
+6 -3
View File
@@ -57,7 +57,7 @@ ARCH=
# Defines that are needed to compile
#
CDEFINE=
CDEFINE= -DZ=200
# Include files that are needed to compile
#
@@ -112,8 +112,8 @@ OBJ= ${PROG}.o
DATA=
TARGET= ${PROG}
#
ALT_OBJ=
ALT_TARGET=
ALT_OBJ= ${PROG}.alt.o
ALT_TARGET= ${PROG}.alt
#################
@@ -136,6 +136,9 @@ ${PROG}: ${PROG}.c
alt: data ${ALT_TARGET}
@${TRUE}
${PROG}.alt: ${PROG}.alt.c
${CC} ${CFLAGS} $< -o $@ ${LIBS}
# data files
#
data: ${DATA}
+52 -16
View File
@@ -11,6 +11,7 @@ US
make all
```
## To run:
```sh
@@ -22,6 +23,42 @@ where:
- number is a number (try 21701)
- arg is any argument
NOTE: an alternate version exists. See Alternate code section below.
## Try:
```sh
./plummer 01234567890876543210 xxx
```
### Alternate code:
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) added an alternate
version which uses `usleep()` so you can see what is happening with faster
systems. To use:
```sh
make alt
```
Use `plummer.alt` as you would `plummer`.
If you wish to change the time to sleep (default `200`) you can do so like:
```sh
make clobber CDEFINE="-DZ=50" alt
```
#### Try:
```sh
./plummer.alt xyzzyzzyx 5555
```
Thank you Cody!
### INABIAF - it's not a bug it's a feature :-)
This entry will very likely crash or do something else if you run it without
@@ -41,32 +78,31 @@ specifies the number to start counting from and uses leading `0`s to
indicate the number of digits, the second argument can be anything
but must be present.
Variable names are single characters chosen for their similarity to
other characters (O for 0, l for 1, S for 5 in some fonts, and _
for ... well nothing really, but it is easy to miss). To prevent
the need for `strlen()`, the fact that argv is laid out sequentially
is exploited (ie. `argv[i + 1] == argv[i] + strlen(argv[i]) + 1`).
This is not portable (by the books), but it seems to work
everywhere I try (actually, for VMS, that only holds for `i > 1`).
Also, I depend on the fact that a carriage return causes the line
just written to be overwritten. `lint` (and most compilers) complain
that there is no control path leading to a return from `main()`. At
125 characters, it still fits on a single line (for those of us who
don't mind ruining our eyes with 132 column screens).
Variable names are single characters chosen for their similarity to other
characters (`O` for `0` (zero), `l` for `1` (one), `S` for `5` (five) in some
fonts, and `_` for ... well nothing really, but it is easy to miss). To
prevent the need for `strlen()`, the fact that argv is laid out sequentially is
exploited (i.e. `argv[i + 1] == argv[i] + strlen(argv[i]) + 1`). This is not
portable (by the books), but it seems to work everywhere I try (actually, for
VMS, that only holds for `i > 1`). Also, I depend on the fact that a carriage
return causes the line just written to be overwritten. `lint` (and most
compilers) complain that there is no control path leading to a return from
`main()`. At 125 characters, it still fits on a single line (for those of us
who don't mind ruining our eyes with 132 column screens).
The first statement points the base of `l` (the argument vector) to
be the first argument by incrementing it. It then assigns `O` to
point to the character before the first character of the second
argument which also happens to be the NULL termination of the first
argument which also happens to be the NUL termination of the first
argument. `*O` gets a `\r` assigned to it. Finally `0` is assigned to
the first character of the second argument which has the effect of
NULL terminating the first argument after the carriage return had
removed its NULL termination. I really tried to make the last part
NUL terminating the first argument after the carriage return had
removed its NUL termination. I really tried to make the last part
of that statement part of the original expression, but the best I
could do was attach it with a comma (against the advice of K&R).
The for loop runs the next for loop continuously (actually until
the machine crashes or the user gets tired of seeing the
counting). The next for loop is the meat of the program. In the
counting). The next for loop is the meat of the program. In the
initialization statement, the string pointed to by `l` (the first
argument containing the digits used for counting followed by a `\r`)
is printed, and `_` is started at the least significant digit in the
+1
View File
@@ -0,0 +1 @@
char*_,*O;main(S,l)char**l;{*(O=*(l+++S-1)-1)=13,*l[1]=0;for(;;)for(printf(*l),_=O-1,usleep(Z);_>=*l&&++*_>(S+*O+S)*S;*_--=(S+*O)*S);}
+4 -8
View File
@@ -1,9 +1,6 @@
# Best Game
Don Dodson
AG Communication Systems
4101 W Union Hills Dr #1104
Glendale, AZ 85308
US
## To build:
@@ -29,11 +26,10 @@ attempt.
### Interactive 3D Maze
Step into a randomly generated 3D maze and try to get out alive!
Use the vi movement keys (hjkl) to move on a level, and u or d
to move (u)p or (d)own from a position with a U or D on the
map. To simulate the feeling of being in an unknown labyrinth,
areas which you have not visited cannot be seen.
Step into a randomly generated 3D maze and try to get out alive! Use the vi
movement keys (`hjkl`) to move on a level, and `u` or `d` to move (u)p or (d)own
from a position with a `U` or `D` on the map. To simulate the feeling of being
in an unknown labyrinth, areas which you have not visited cannot be seen.
Reach the north-west left corner of level 1 to exit.
+1
View File
@@ -1 +1,2 @@
thadgavin
thadgavin_sdl
+1 -2
View File
@@ -1,6 +1,5 @@
fs.tar
gavin
kernel
sh
vi
gavin.o
fs/
+12 -3
View File
@@ -25,7 +25,7 @@ su
```
Make a floppy with an ext2 filesystem (`mke2fs /dev/fd0` replacing `fd0` with
whatever the floppy device is!), mount it under `/mnt/floppy`. Then:
whatever the floppy device is!), mount it under `/mnt/floppy` and then:
```sh
@@ -47,13 +47,13 @@ Move the window away from the corner.
vi gavin.c
```
Scroll the file with up-arrow and down-arrow
Scroll up and down the file with up-arrow and down-arrow.
```sh
sh
```
Can have several shell windows:
You can have several shell windows:
```sh
vi README.md
@@ -62,6 +62,15 @@ vi README.md
Press and hold any key.
### Alternate method
[Yusuke Endoh](/winners.html#Yusuke_Endoh) provided the `kernel` and `fs.tar`
files which can be used if you cannot normally use this entry. Instead of
generating the files just use the files provided.
Thank you Yusuke!
## Judges' remarks:
Over the years, we've seen a program that dumps core if executed on a "wrong"
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+1
View File
@@ -27,6 +27,7 @@ make
./prog
./prog http://127.0.0.1:1701
```
## Judges' remarks:
+9 -6
View File
@@ -24,17 +24,19 @@ cat image.rgb | ./prog ' .,:;!$#@'
## Judges' remarks:
On the face of it :-) given what this program one might wonder what makes this winner special.
But when you realize the source is small enough to tweet on twitter you understand.
On the face of it :-) given what this program does one might wonder what makes
this winner special. But when you realize the source is small enough to tweet
on twitter you understand.
Who will be the first to tweet this source? How many re-tweets will such tweet get?
And how many people will really understand the tweet?
Who will be the first to tweet this source? How many re-tweets will such tweet
get? And how many people will really understand the tweet?
## Author's remarks:
### Remarks
This program convert an image to an ASCII ART. The program reads a raw RGB image from **stdin** and print the ASCII ART to **stdout**.
This program convert an image to an ASCII ART. The program reads a raw RGB image
from **stdin** and print the ASCII ART to **stdout**.
The build process will raise some warnings about:
@@ -45,7 +47,8 @@ The program crash if run without parameters.
### Screen size
If you have a terminal geometry than if different from the common 80x25 you can modify the *output width* by changing the value of the first variable:
If you have a terminal geometry than is different from the common 80x25 you can
modify the *output width* by changing the value of the first variable:
```c
d=80,
+4 -4
View File
@@ -1,7 +1,7 @@
# Most Pointed Reaction
Don Yang
<http://uguu.org/>
Don Yang
<http://uguu.org/>
## To build:
@@ -65,7 +65,7 @@ echo IOCCC | ./fuuko_cpp98 > output_cpp98.c
```
Don't like dango either? Use a C++11 compiler to get just circles (or
swiss cheese, if you prefer that).
Swiss cheese, if you prefer that).
```sh
g++ -O3 -std=c++11 fuuko.c -lm -o fuuko_cpp11
@@ -106,7 +106,7 @@ Fuuko has been tested under these environments:
The most obscure parts are in detecting the subtle differences in
different dialects. The standard committees put a lot of effort into
avoiding "quiet changes", but Fuuko is still able exploit a few of
avoiding "quiet changes", but Fuuko is still able to exploit a few of
those. It should be an interesting exercise for the reader to figure
how she did it.