Merge pull request #1415 from xexyl/birken2013

This commit is contained in:
Landon Curt Noll authored and GitHub committed 2023-11-14 06:02:54 -07:00
commit 27f75f38c1
6 files changed
+30 -15

No files matched your search

+1 -1
View File
@@ -61,7 +61,7 @@ CDEFINE= -DZ=15000
# Include files that are needed to compile # Include files that are needed to compile
# #
CINCLUDE= CINCLUDE= -include stdlib.h
# Optimization # Optimization
# #
+12 -5
View File
@@ -42,9 +42,16 @@ perl -e 'map{map{print int(rand()*8);}(0..16);print chr(10);}(0..30);' | tr '[0-
./try.sh ./try.sh
``` ```
If you wish to speed it up 200% you can use instead `-DZ=3750`. Doing this If you wish to speed that up 200% you can use instead `-DZ=3750`. Doing this you
you might find the right value to your liking; use ctrl-c to terminate the might find the right value to your liking; use ctrl-c to terminate the program
program early. early but note that the terminal is likely to be messed up. Try:
```sh
reset
```
to make it sane again (running to completion will do that for you).
## Original code: ## Original code:
@@ -69,8 +76,8 @@ PLEASE be careful if you are sensitive to flashing colours!
## Judges' remarks: ## Judges' remarks:
This program also wins the "Most amusing abuse of the iocccsize tool" award; although not the This program also wins the "Most amusing abuse of the iocccsize tool" award;
absolute best: it is possible to achieve 0 by writing: although not the absolute best: it is possible to achieve 0 by writing:
```c ```c
/* *\ /* *\
+2 -1
View File
@@ -4,6 +4,7 @@ char*_ = "'""/*";
#define m 21 #define m 21
#define o(l, k) for(l=0; l<k; l++) #define o(l, k) for(l=0; l<k; l++)
#define n(k) o(T, k) #define n(k) o(T, k)
#define exit(x) return system("reset")
int E,L,O,R,G[42][m],h[2][42][m],g[3][8],c int E,L,O,R,G[42][m],h[2][42][m],g[3][8],c
@@ -47,4 +48,4 @@ g[2][g[i][T]]=T; n(R+i)o(e,m )if(G[T][e]+i) G[T][e]=g[2][G[T][e]];
; else if(G[R][T]+i) s++; if(s) { if(V>4){ V=9-V; D++; } V+=29; n(20) q(c[V][T][0],c ; else if(G[R][T]+i) s++; if(s) { if(V>4){ V=9-V; D++; } V+=29; n(20) q(c[V][T][0],c
[V][T][i],D); } } n(19) if((L=G[R][T])+i) { O=T-L; e=O>9; t=e?18-O :O; o(K,((t&3)-3? [V][T][i],D); } } n(19) if((L=G[R][T])+i) { O=T-L; e=O>9; t=e?18-O :O; o(K,((t&3)-3?
16:37)){ if(K){ L=c[t+19][K-i][0]; O=c[t+19][K-i][i] ; } q(L,O,K && e); } } if(s) q( 16:37)){ if(K){ L=c[t+19][K-i][0]; O=c[t+19][K-i][i] ; } q(L,O,K && e); } } if(s) q(
c[V][20][0], c[V][20][i], D); R--; } printf("\33[47;1f\33[?25h\33[40m"); return 0; } c[V][20][0], c[V][20][i], D); R--; } printf("\33[47;1f\33[?25h\33[40m"); exit(0); }
+2 -1
View File
@@ -3,6 +3,7 @@ char*_ = "'""/*";
#define m 21 #define m 21
#define o(l, k) for(l=0; l<k; l++) #define o(l, k) for(l=0; l<k; l++)
#define n(k) o(T, k) #define n(k) o(T, k)
#define exit(x) return system("reset")
int E,L,O,R,G[42][m],h[2][42][m],g[3][8],c int E,L,O,R,G[42][m],h[2][42][m],g[3][8],c
@@ -46,4 +47,4 @@ g[2][g[i][T]]=T; n(R+i)o(e,m )if(G[T][e]+i) G[T][e]=g[2][G[T][e]];
; else if(G[R][T]+i) s++; if(s) { if(V>4){ V=9-V; D++; } V+=29; n(20) q(c[V][T][0],c ; else if(G[R][T]+i) s++; if(s) { if(V>4){ V=9-V; D++; } V+=29; n(20) q(c[V][T][0],c
[V][T][i],D); } } n(19) if((L=G[R][T])+i) { O=T-L; e=O>9; t=e?18-O :O; o(K,((t&3)-3? [V][T][i],D); } } n(19) if((L=G[R][T])+i) { O=T-L; e=O>9; t=e?18-O :O; o(K,((t&3)-3?
16:37)){ if(K){ L=c[t+19][K-i][0]; O=c[t+19][K-i][i] ; } q(L,O,K && e); } } if(s) q( 16:37)){ if(K){ L=c[t+19][K-i][0]; O=c[t+19][K-i][i] ; } q(L,O,K && e); } } if(s) q(
c[V][20][0], c[V][20][i], D); R--; } printf("\33[47;1f\33[?25h\33[40m"); return 0; } c[V][20][0], c[V][20][i], D); R--; } printf("\33[47;1f\33[?25h\33[40m"); exit(0); }
+1 -1
View File
@@ -18,7 +18,7 @@ if [[ -z "$BIRKEN" ]]; then
BIRKEN="birken.alt" BIRKEN="birken.alt"
fi fi
trap "clear; exit" SIGINT trap 'reset; exit' 0 1 2 3 15
for i in *.txt; do for i in *.txt; do
NAME="$(echo "$i" | awk '{ print toupper(substr($1,1,1)) substr($1,2)}'|sed -e 's/\.txt//g' \ NAME="$(echo "$i" | awk '{ print toupper(substr($1,1,1)) substr($1,2)}'|sed -e 's/\.txt//g' \
+12 -6
View File
@@ -3040,13 +3040,19 @@ sure if he wants to be thanked either :-) but we appreciate it nonetheless.
## [2013/birken](2013/birken/birken.c) ([README.md](2013/birken/README.md])) ## [2013/birken](2013/birken/birken.c) ([README.md](2013/birken/README.md]))
Along with the [try.sh](2013/birken/try.sh) that he added, Cody also added an Cody changed the `return 0;` at the end of the program to be `return
alternate version which allows one to control how fast the painting is done, system("reset");` (via redefining `exit(3)` so that the column ending would be
the same) so that as long as it runs to completion the terminal will be sane and
the cursor will be visible. Using `atexit(3)` will not work if the program is
killed and signals are ugly so this was not done.
Cody also added the [try.sh](2013/birken/try.sh) script and the
alternate version (that has the above fix) which allows one to control how fast the painting is done,
based on the author's recommendations, except that Cody made it configurable at based on the author's recommendations, except that Cody made it configurable at
compile time just like he did with other entries (in all but one it was compile time just like he did with other entries that use `usleep(3)`. The
alternate code) that use `usleep()`. The alternate version and the original alternate version and the original version were swapped in the `To build`, `To
version were swapped in the `To build`, `To run` and `Try` sections, with what run` and `Try` sections, with what is normally `Alternate code` being `Original
is normally `Alternate code` being `Original code`. code`.
## [2013/cable3](2013/cable3/cable3.c) ([README.md](2013/cable3/README.md])) ## [2013/cable3](2013/cable3/cable3.c) ([README.md](2013/cable3/README.md]))