Make 1987/heckbert examples work
That is the examples have been changed to not break. See the README.md file for details (including some fun details).
This commit is contained in:
1 parent
17609d36ed
commit
67ea38312a
4 files changed
+27
-34
No files matched your search
@@ -1,4 +1,7 @@
|
||||
bar
|
||||
bar.c
|
||||
foo
|
||||
foo.c
|
||||
heckbert
|
||||
ph
|
||||
ph.c
|
||||
@@ -179,21 +179,13 @@ ALT_TARGET= ${PROG}.orig
|
||||
all: ${DATA} ${TARGET}
|
||||
@${TRUE}
|
||||
|
||||
.PHONY: alt data everything clean clobber nuke dist_clean \
|
||||
.PHONY: data everything clean clobber nuke dist_clean \
|
||||
install build love haste waste make easter_egg \
|
||||
supernova deep_magic magic charon pluto
|
||||
|
||||
${PROG}: ${PROG}.c
|
||||
${CC} ${CFLAGS} $< -o $@ ${LIBS}
|
||||
|
||||
# alternative executable
|
||||
#
|
||||
alt: ${DATA} ${ALT_TARGET}
|
||||
@${TRUE}
|
||||
|
||||
${PROG}.orig: ${PROG}.orig.c
|
||||
@echo "NOTE: The original source may not compile using modern compilers."
|
||||
${CC} ${CFLAGS} $< -o $@ ${LIBS}
|
||||
|
||||
# data files
|
||||
#
|
||||
|
||||
+23
-7
@@ -7,23 +7,39 @@ Pixar
|
||||
|
||||
make all
|
||||
|
||||
NOTE: The original entry may be built with "make alt".
|
||||
|
||||
On System V systems, we had to compile with `-Dindex=strchr`.
|
||||
To compile on a 16 bit machine, change 300000 to 30000.
|
||||
|
||||
|
||||
## Judges' comments:
|
||||
|
||||
|
||||
### Try:
|
||||
ph 40 < ph.c > foo.c; cc foo.c -o ph
|
||||
ph 20 < a_C_prog.c > bar.c; cc bar.c
|
||||
|
||||
./heckbert 40 < heckbert.c > ph.c; make ph
|
||||
./ph 21 < heckbert.c > bar.c; make bar
|
||||
# or more generally fold some other file at a positive column:
|
||||
./ph col < file
|
||||
|
||||
Ask yourself what happens to `foo.md` if you try:
|
||||
|
||||
./ph 40 < README.md > foo.md
|
||||
|
||||
Folding at the wrong length may be equivalent to a "Spindle or Mutilate" operation. For example:
|
||||
|
||||
./heckbert 40 < heckbert.c > ph.c ; make ph ; ./ph 20 < heckbert.c > bar.c ; make bar
|
||||
|
||||
|
||||
Try not to
|
||||
[Fold, Spindle or Mutilate](https://repository.library.brown.edu/studio/item/bdr:788264/PDF/)
|
||||
files. :-)
|
||||
|
||||
|
||||
The judges used this program to fold up very long lines which the
|
||||
BSD fold(1) was unable to process. This program has been added
|
||||
to the contest tool chest.
|
||||
|
||||
On System V systems, compile with: `-Dindex=strchr`
|
||||
To compile on a 16 bit machine, change 300000's to 30000.
|
||||
|
||||
NOTE: This entry requires a non-standard K&R C compiler to compile.
|
||||
|
||||
Copyright (c) 1987, Landon Curt Noll & Larry Bassel.
|
||||
All Rights Reserved. Permission for personal, educational or non-profit use is
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
#include <ctype.h>
|
||||
#include <stdio.h>
|
||||
#define _ define
|
||||
#_ A putchar
|
||||
#_ B return
|
||||
#_ C index
|
||||
char*r,c[300001],*d=">=<=!===||&&->++-->><<",*i,*l,*j,*m,*k,*n,*h,*y;e,u=1,v,w,
|
||||
f=1,p,s,x;main(a,b)char**b;{p=a>1?atoi(b[1]):79;r=c+read(0,j=l=i=c,300000);v=g(
|
||||
j,&m);for(k=m;v!=2;j=k,m=n,v=w,k=m){w=g(k,&n);if(v==1&&m-j==1&&*j==35)e&&A(10),
|
||||
e=f=0;if(!f&&v==3&&(char*)C(j,10)<m)A(10),e=0,f=1;else if(v>2&&(u||w)&&(f||u)&&
|
||||
(l-i>1||*i!=61||n-k>1||!C("-*&",*k)))continue;else if(v==3)if(f&&e+1+n-k>p&&e)A
|
||||
(10),e=0;else A(32),e++;else{if(f&&e+m-j>p&&e)A(10),e=0;e+=m-j;k=j;while(k<m)A(
|
||||
*k++);}i=j;l=m;u=v;}e&&A(10);}g(j,m)char*j,**m;{if(j>=r)B*m=j,2;s=isdigit(*j)||
|
||||
*j==46&&isdigit(j[1]);for(h=j;h<r;h++)if(!isalnum(*h)&&*h!=95&&(!s||*h!=46)&&(!
|
||||
s||h[-1]!=101&&h[-1]!=69||!C("+-",*h)))break;if(h>j)B*m=h,0;x=1;for(h=j;h<r&&C(
|
||||
" \t\n",*h);h++);if(h>j)h--,x=3;if(*j==34||*j==39)for(h=j+1;h<r&&*h!=*j;h++)if(
|
||||
*h==92)h++;for(y=d;*y&&strncmp(y,j,2);y+=2);if(*y)h=j+1;if(!strncmp("/*",j,2)){
|
||||
h=j+2;while(*++h!=42||*++h!=47);x=4;}*m=h+1;B x;}
|
||||
Reference in new issue
Block a user