Merge pull request #1182 from xexyl/alt-try-header
This commit is contained in:
21 files changed
+290
-93
No files matched your search
@@ -58,7 +58,7 @@ overflow!
|
||||
BTW: is there such a thing as too fast a CPU ? :-) Actually yes for certain code
|
||||
which is probably not as uncommon as you think :-).
|
||||
|
||||
#### Try:
|
||||
### Alternate try:
|
||||
|
||||
|
||||
```sh
|
||||
@@ -137,7 +137,7 @@ make gentab
|
||||
./gentab file
|
||||
```
|
||||
|
||||
#### Try:
|
||||
### Alternate try:
|
||||
|
||||
```sh
|
||||
./gentab gentab
|
||||
|
||||
@@ -76,7 +76,7 @@ make all
|
||||
./lycklama < some_file
|
||||
```
|
||||
|
||||
#### Try:
|
||||
### Alternate try:
|
||||
|
||||
```sh
|
||||
./lycklama < lycklama.c
|
||||
|
||||
@@ -45,7 +45,7 @@ make alt
|
||||
./sicherman.alt < file
|
||||
```
|
||||
|
||||
#### Try:
|
||||
### Alternate try:
|
||||
|
||||
|
||||
```sh
|
||||
|
||||
@@ -40,7 +40,7 @@ make alt
|
||||
|
||||
Use `litmaath.alt` as you would `litmaath` above.
|
||||
|
||||
#### Try:
|
||||
### Alternate try:
|
||||
|
||||
```sh
|
||||
./litmaath.alt six was afraid of seven because seven eight nine
|
||||
|
||||
@@ -41,7 +41,7 @@ include ../../var.mk
|
||||
CSILENCE= -Wno-char-subscripts -Wno-constant-conversion -Wno-empty-body \
|
||||
-Wno-implicit-function-declaration -Wno-parentheses -Wno-unsequenced \
|
||||
-Wno-unused-variable -Wno-strict-prototypes \
|
||||
-Wno-extra-semi -Wno-non-literal-null-conversion
|
||||
-Wno-extra-semi -Wno-non-literal-null-conversion -Wno-implicit-int
|
||||
|
||||
# Common C compiler warning flags
|
||||
#
|
||||
|
||||
+14
-2
@@ -38,13 +38,25 @@ by chance or is killed.
|
||||
## Alternate code:
|
||||
|
||||
The author suggested that one varies the definition of `P` from 2 through 10. As
|
||||
it's a `#define` it's easy to set up. To use try:
|
||||
it's a `#define` it's easy to set up.
|
||||
|
||||
|
||||
### Alternate build:
|
||||
|
||||
|
||||
```sh
|
||||
make CFLAGS="-DP=9" clobber alt
|
||||
```
|
||||
|
||||
Use `ovdluhe.alt` as you would `ovdluhe`.
|
||||
You do not have to define `P` but if you do you can replace the value with
|
||||
whatever you wish, as long as it's an int.
|
||||
|
||||
|
||||
### Alternate use:
|
||||
|
||||
```sh
|
||||
./ovdluhe.alt
|
||||
```
|
||||
|
||||
|
||||
## Judges' remarks:
|
||||
|
||||
@@ -16,6 +16,7 @@ make all
|
||||
```
|
||||
|
||||
## Try:
|
||||
|
||||
```sh
|
||||
./tromp 5
|
||||
|
||||
@@ -53,18 +54,21 @@ loser](https://web.archive.org/web/20181023221954/https://www.chicagotribune.com
|
||||
The author provided an alternate version of the code with some improvements. See
|
||||
the judges' additional remarks in the author's remarks, for more details.
|
||||
|
||||
### Alternate use:
|
||||
### Alternate build:
|
||||
|
||||
```sh
|
||||
make alt
|
||||
```
|
||||
|
||||
### Alternate use:
|
||||
|
||||
Use `tromp.alt` as you would `tromp` above.
|
||||
|
||||
NOTE: testing more than one user updating the high score file, one of the
|
||||
benefits of the alt version, has not been done.
|
||||
|
||||
The original unmodified alternate code is provided later.
|
||||
The original unmodified alternate code, which will no longer work right if it
|
||||
even compiles, is provided later in the author's remarks.
|
||||
|
||||
## Judges' remarks:
|
||||
|
||||
|
||||
@@ -1,11 +1,20 @@
|
||||
alt.ver0
|
||||
alt.ver0.c
|
||||
ver0
|
||||
ver0.c
|
||||
alt.ver1
|
||||
alt.ver1.c
|
||||
ver1
|
||||
ver1.c
|
||||
alt.ver2
|
||||
alt.ver2.c
|
||||
ver2
|
||||
ver2.c
|
||||
alt.ver3
|
||||
alt.ver3.c
|
||||
ver3
|
||||
ver3.c
|
||||
westley
|
||||
westley.alt
|
||||
westley.orig
|
||||
prog.orig
|
||||
@@ -140,6 +140,9 @@ ${PROG}: ${PROG}.c
|
||||
alt: data ${ALT_TARGET}
|
||||
@${TRUE}
|
||||
|
||||
${ALT_TARGET}: ${PROG}.alt.c
|
||||
${CC} ${CFLAGS} -Dznva=main $< -o $@ ${LDFLAGS}
|
||||
|
||||
ver0: ${PROG}
|
||||
-./${PROG} < westley.c > ver0.c
|
||||
-${CC} ${CFLAGS} ver0.c -o $@ ${LDFLAGS}
|
||||
@@ -159,6 +162,25 @@ ver3: ${PROG}
|
||||
@echo "** NOTE: this version will not compile with clang **"
|
||||
-${CC} ${CFLAGS} ver3.c -o $@ ${LDFLAGS}
|
||||
|
||||
alt.ver0: ${PROG}.alt
|
||||
-./${PROG}.alt < westley.alt.c > alt.ver0.c
|
||||
-${CC} ${CFLAGS} -Dznva=main alt.ver0.c -o $@ ${LDFLAGS}
|
||||
|
||||
alt.ver1: ${PROG}.alt
|
||||
-./${PROG}.alt 1 < westley.alt.c > alt.ver1.c
|
||||
-${CC} ${CFLAGS} -Dznva=main alt.ver1.c -o $@ ${LDFLAGS}
|
||||
|
||||
alt.ver2: ${PROG}.alt
|
||||
-./${PROG}.alt 1 2 < westley.alt.c > alt.ver2.c
|
||||
@echo "** NOTE: this alt version will not currently compile **"
|
||||
-${CC} ${CFLAGS} -Dznva=main alt.ver2.c -o $@ ${LDFLAGS}
|
||||
|
||||
alt.ver3: ${PROG}.alt
|
||||
-./${PROG}.alt 1 2 3 < westley.alt.c > alt.ver3.c
|
||||
@echo "** NOTE: this alt version will not currently compile **"
|
||||
-${CC} ${CFLAGS} -Dznva=main alt.ver3.c -o $@ ${LDFLAGS}
|
||||
|
||||
|
||||
# data files
|
||||
#
|
||||
data: ${DATA}
|
||||
|
||||
+15
-30
@@ -30,17 +30,6 @@ Try compiling and running the 4 resulting programs like:
|
||||
./compile.sh
|
||||
```
|
||||
|
||||
This will remove the programs and then run:
|
||||
|
||||
```
|
||||
./westley < westley.c > ver0.c
|
||||
./westley 1 < westley.c > ver1.c
|
||||
./westley 1 2 < westley.c > ver2.c
|
||||
./westley 1 2 3 < westley.c > ver3.c
|
||||
```
|
||||
|
||||
followed by compiling each version.
|
||||
|
||||
If you need to specify an alternate compiler path, say because your default
|
||||
compiler is clang (or in the case of macOS gcc is clang) you can do so like:
|
||||
|
||||
@@ -60,39 +49,35 @@ Finally try:
|
||||
./westley
|
||||
# input some lines of text, sending EOF (usually ctrl-d) to end
|
||||
|
||||
echo IOCCC | ./westley
|
||||
echo IOCCC | ./westley 1
|
||||
echo IOCCC | ./westley 1 2
|
||||
echo IOCCC | ./westley 1 2 3
|
||||
|
||||
echo IOCCC | ./ver0
|
||||
echo Version 1 | ./ver1
|
||||
echo Version 2 | ./ver2
|
||||
echo Version 3 | ./ver3
|
||||
./try.sh # demo of some input
|
||||
```
|
||||
|
||||
## Alternate code:
|
||||
|
||||
The alternate code allows SOME of the features to work with clang but some of
|
||||
the code it generates (see [compile.sh](compile.sh), which does not use this
|
||||
version) is not compilable even in gcc let alone clang. Nevertheless the main
|
||||
feature should work for clang.
|
||||
the code it generates (see [compile.alt.sh](compile.alt.sh) is not compilable
|
||||
even in gcc let alone clang. Nevertheless the main feature should work and the
|
||||
same goes for the `alt.ver0` and `alt.ver1`; currently `alt.ver2` and `alt.ver3`
|
||||
will not compile even with gcc but it is nonetheless generated for when it is
|
||||
(hopefully) fixed.
|
||||
|
||||
### To build:
|
||||
### Alternate build:
|
||||
|
||||
```sh
|
||||
make alt
|
||||
```
|
||||
|
||||
### Try:
|
||||
### Alternate try:
|
||||
|
||||
```sh
|
||||
echo IOCCC | ./westley.alt
|
||||
echo IOCCC | ./westley.alt 1
|
||||
echo IOCCC | ./westley.alt 1 2
|
||||
echo IOCCC | ./westley.alt 1 2 3
|
||||
```
|
||||
./westley.alt
|
||||
# input some text
|
||||
|
||||
# generate alt code versions:
|
||||
./compile.alt.sh
|
||||
|
||||
./try.alt.sh # demo of some input
|
||||
```
|
||||
|
||||
|
||||
## Judges' remarks:
|
||||
|
||||
Executable
+62
@@ -0,0 +1,62 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# compile.sh - compile westley.alt.c, generate the alt versions and then attempt to
|
||||
# compile them.
|
||||
#
|
||||
# To change what compiler is used you can do something like:
|
||||
#
|
||||
# CC=/path/to/cc ./compile.sh
|
||||
#
|
||||
# The following example was run on a MacBook Pro with the M1 Max which which
|
||||
# could not normally compile everything because macOS's compiler, even when run
|
||||
# as gcc, is actually clang:
|
||||
#
|
||||
# CC=/opt/local/bin/gcc-mp-12 ./compile.sh
|
||||
#
|
||||
# We sleep (by default) for approximately 1 second after each command so that
|
||||
# the you can read what is being done. If this is too fast you can change it in
|
||||
# a similar way to the above but using the variable DELAY like so:
|
||||
#
|
||||
# DELAY=2 ./compile.sh
|
||||
#
|
||||
# You can of course use both variables in the same command line like:
|
||||
#
|
||||
# CC=/opt/local/bin/gcc-mp-12 DELAY=2 ./compile.sh
|
||||
# DELAY=2 CC=/opt/local/bin/gcc-mp-12 ./compile.sh
|
||||
#
|
||||
# ...and so on.
|
||||
|
||||
# get the compiler using default cc if not specified in the command line
|
||||
#
|
||||
# we cannot use the form '${CC:=cc}' because at least in some versions of bash
|
||||
# it tries to invoke the command which would be an error by itself. Thus we just
|
||||
# check if it's empty before we set it.
|
||||
if [[ -z "$CC" ]]; then
|
||||
CC="cc"
|
||||
fi
|
||||
|
||||
# get sleep duration
|
||||
# we cannot use the form '${DELAY:=5}' because at least in some versions of bash
|
||||
# it tries to invoke the command and obviously that won't work. Thus we check if
|
||||
# it's empty before setting the default.
|
||||
if [[ -z "$DELAY" ]]; then
|
||||
DELAY=0
|
||||
fi
|
||||
|
||||
# make clobber to make the directory clean and then compile westley.alt which we
|
||||
# need to run everything else. Exit if make westley.alt fails as there would be
|
||||
# nothing further that could be done in that case:
|
||||
echo "$ make clobber westley.alt"
|
||||
sleep "$DELAY"
|
||||
make CC="$CC" clobber westley.alt || exit 1
|
||||
sleep "$DELAY"
|
||||
|
||||
# run commands previously in the try section of the README.md, showing what the
|
||||
# commands are as we go:
|
||||
|
||||
# now generate and compile the files
|
||||
#
|
||||
echo "Generating and compiling alt versions ..." 1>&2
|
||||
sleep "$DELAY"
|
||||
echo "$ make CC=$CC alt.ver0 alt.ver1 alt.ver2 alt.ver3" 1>&2
|
||||
make CC="$CC" alt.ver0 alt.ver1 alt.ver2 alt.ver3
|
||||
@@ -13,7 +13,9 @@
|
||||
#
|
||||
# CC=/opt/local/bin/gcc-mp-12 ./compile.sh
|
||||
#
|
||||
# If you wish to slow down the script you can use the DELAY variable like:
|
||||
# We sleep (by default) for approximately 1 second after each command so that
|
||||
# the you can read what is being done. If this is too fast you can change it in
|
||||
# a similar way to the above but using the variable DELAY like so:
|
||||
#
|
||||
# DELAY=2 ./compile.sh
|
||||
#
|
||||
@@ -34,7 +36,7 @@ if [[ -z "$CC" ]]; then
|
||||
fi
|
||||
|
||||
# get sleep duration
|
||||
# we cannot use the form '${DELAY:=0}' because at least in some versions of bash
|
||||
# we cannot use the form '${DELAY:=5}' because at least in some versions of bash
|
||||
# it tries to invoke the command and obviously that won't work. Thus we check if
|
||||
# it's empty before setting the default.
|
||||
if [[ -z "$DELAY" ]]; then
|
||||
@@ -68,8 +70,8 @@ sleep "$DELAY"
|
||||
# now compile the files by running make alt
|
||||
#
|
||||
|
||||
echo "Compiling alt versions ..." 1>&2
|
||||
echo "Compiling generated versions ..." 1>&2
|
||||
sleep "$DELAY"
|
||||
echo "$ make CC=$CC alt" 1>&2
|
||||
echo "$ make CC=$CC ver0 ver1 ver2 ver3" 1>&2
|
||||
sleep "$DELAY"
|
||||
make CC="$CC" alt
|
||||
make CC="$CC" ver0 ver1 ver2 ver3
|
||||
Executable
+39
@@ -0,0 +1,39 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
make alt || exit 1
|
||||
|
||||
|
||||
echo "$ echo IOCCC | ./westley.alt"
|
||||
echo IOCCC | ./westley.alt
|
||||
echo
|
||||
|
||||
echo "$ echo IOCCC | ./westley.alt 1"
|
||||
echo IOCCC | ./westley.alt 1
|
||||
echo
|
||||
|
||||
echo "$ echo IOCCC | ./westley.alt 1 2"
|
||||
echo IOCCC | ./westley.alt 1 2
|
||||
echo
|
||||
|
||||
echo "$ echo IOCCC | ./westley.alt 1 2 3"
|
||||
echo IOCCC | ./westley.alt 1 2 3
|
||||
echo
|
||||
|
||||
echo "$ echo IOCCC | ./alt.ver0"
|
||||
echo IOCCC | ./alt.ver0
|
||||
echo
|
||||
|
||||
echo "$ echo Version 1 | ./alt.ver1"
|
||||
echo Version 1 | ./alt.ver1
|
||||
echo
|
||||
|
||||
echo "$ echo Version 1 | ./alt.ver1 1"
|
||||
echo Version 1 | ./alt.ver1 1
|
||||
echo
|
||||
|
||||
echo "$ echo Version 1 | ./alt.ver1 1 2"
|
||||
echo Version 1 | ./alt.ver1 1 2
|
||||
echo
|
||||
|
||||
echo "$ echo Version 1 | ./alt.ver1 1 2 3"
|
||||
echo Version 1 | ./alt.ver1 1 2 3
|
||||
Executable
+70
@@ -0,0 +1,70 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
make all || exit 1
|
||||
|
||||
echo "$ echo IOCCC | ./westley"
|
||||
echo IOCCC | ./westley
|
||||
echo
|
||||
|
||||
echo "$ echo IOCCC | ./westley 1"
|
||||
echo IOCCC | ./westley 1
|
||||
echo
|
||||
|
||||
echo "$ echo IOCCC | ./westley 1 2"
|
||||
echo IOCCC | ./westley 1 2
|
||||
echo
|
||||
|
||||
echo "$ echo IOCCC | ./westley 1 2 3"
|
||||
echo IOCCC | ./westley 1 2 3
|
||||
echo
|
||||
|
||||
echo "$ echo IOCCC | ./ver0"
|
||||
echo IOCCC | ./ver0
|
||||
echo
|
||||
|
||||
echo "$ echo Version 1 | ./ver1"
|
||||
echo Version 1 | ./ver1
|
||||
echo
|
||||
|
||||
echo "$ echo Version 1 | ./ver1 1"
|
||||
echo Version 1 | ./ver1 1
|
||||
echo
|
||||
|
||||
echo "$ echo Version 1 | ./ver1 1 2"
|
||||
echo Version 1 | ./ver1 1 2
|
||||
echo
|
||||
|
||||
echo "$ echo Version 1 | ./ver1 1 2 3"
|
||||
echo Version 1 | ./ver1 1 2 3
|
||||
echo
|
||||
|
||||
echo "$ echo Version 2 | ./ver2"
|
||||
echo Version 2 | ./ver2
|
||||
echo
|
||||
|
||||
echo "$ echo Version 2 | ./ver2 1"
|
||||
echo Version 2 | ./ver2 1
|
||||
echo
|
||||
|
||||
echo "$ echo Version 2 | ./ver2 1 2"
|
||||
echo Version 2 | ./ver2 1 2
|
||||
echo
|
||||
|
||||
echo "$ echo Version 2 | ./ver2 1 2 3"
|
||||
echo Version 2 | ./ver2 1 2 3
|
||||
echo
|
||||
|
||||
echo "$ echo Version 3 | ./ver3"
|
||||
echo Version 3 | ./ver3
|
||||
echo
|
||||
|
||||
echo "$ echo Version 3 | ./ver3 1"
|
||||
echo Version 3 | ./ver3 1
|
||||
echo
|
||||
|
||||
echo "$ echo Version 3 | ./ver3 1 2"
|
||||
echo Version 3 | ./ver3 1 2
|
||||
echo
|
||||
|
||||
echo "$ echo Version 3 | ./ver3 1 2 3"
|
||||
echo Version 3 | ./ver3 1 2 3
|
||||
+11
-11
@@ -1,13 +1,12 @@
|
||||
|
||||
/**//*/};)/**/main(/*//**/tang ,gnat/**//*/,ABBA~,0-0(avnz;)0-0,tang,raeN
|
||||
,ABBA(niam&&)))2-]--tang-[kri - =raeN(&&0<)/*clerk*/,noon,raeN)char
|
||||
**gnat, **noon, **raeN;{int gn = gnat, ra = raeN, no = noon; (!tang&&
|
||||
no!=-1&&(gn&2)&&((raeN&&( getchar(no+0)))||(1-ra&&(trgpune(no
|
||||
)))))||tang&&znva(/*//**/tang ,tang,tang/**|**//*/((||)))0(enupgrt=raeN
|
||||
/**//*/;)/**/pain(/*//**/tang ,gnat/**//*/,ABBA~,0-0(avnc-0,tang,raeN
|
||||
,ABBA(niam&&)))2-]--tang-[kri - =raeN(&&0<)/*clerk*/,noon,raeN){(!tang&&
|
||||
noon!=-1&&(gnat&2)&&((raeN&&( getchar(noon+0)))||(1-raeN&&(trgpune(noon
|
||||
)))))||tang&&cnva(/*//**/tang ,tang/**|**//*/((||)))0(enupgrt=raeN
|
||||
(&&tang!(||)))0(rahcteg=raeN( &&1==tang((&&1-^)gnat=raeN(;;;)tang,gnat
|
||||
,ABBA,0(avnz;)gnat:46+]552&)191+gnat([kri?0>]652%)191+gnat([kri=gnat
|
||||
,ABBA,0(avnc;)gnat:46+]552&)191+gnat([kri?0>]652%)191+gnat([kri=gnat
|
||||
(&&)1-^gnat(&&)1& ABBA(!;)raeN,tang,gnat,ABBA(avnz&&0>ABBA{)raeN
|
||||
,/**/);}znva(/*//**/tang,gnat,ABBA/**//*/(niam;}1-,78-,611-,321
|
||||
,/**/);}cnva(/*//**/tang,gnat,ABBA/**//*/(niam;}1-,78-,611-,321
|
||||
-,321-,001-,64-,43-,801-,001-,301-,321-,511-,53-,54,44,34,24
|
||||
,14,04,93,83,73,63,53,43,33,85,75,65,55,45,35,25,15,05,94,84
|
||||
,74,64,0,0,0,0,0,0,/**/){ABBA='N'==65;(ABBA&&(gnat=trgpune
|
||||
@@ -15,11 +14,12 @@ no!=-1&&(gn&2)&&((raeN&&( getchar(no+0)))||(1-ra&&(trgpune(no
|
||||
gnat&&gnat<='z'||'a'<=gnat&&gnat<='m'||'N'<=gnat&&gnat<='Z'
|
||||
||'A'<=gnat&&gnat<='M'?(((gnat&/*//**/31/**//*/,21,11,01,9,8
|
||||
,7,6,5,4,3,2,1,62,52,42,/**/)+12)%26)+(gnat&/*//**/32/**//*/,
|
||||
22,12,02,91,81,71,61,51,41{=]652[kri};)/*pry*/)+65:gnat);main
|
||||
22,12,02,91,81,71,61,51,41{=]652[kri};)/*pry*/)+65:gnat);pain
|
||||
(/*//**\**/tang^tang/**//*/,/* */,~/*//*-*/tang,gnat,ABBA-
|
||||
0/**//*/(niam&&ABBA||))))tang( rahcteg&&1-1=<enrA(||))tang(
|
||||
enupgrt&&1==enrA((&&)2&gnat(&& )1-^tang(&&ABBA!(;)85- =tang
|
||||
(&&)'a\'=gnat(&&)1-==gnat(&&)4 ==ABBA(&&tang!;))))0(enupgrt=
|
||||
gnat(&&)tang!((||)))0(rahcteg =gnat(&&tang((&&ABBA;;)1-'A'=!
|
||||
'Z'=tang(&&ABBA{)enrA/***/);gnat ^-1&&znva(tang+1,gnat,1+gnat);
|
||||
main(ABBA&2/*//*\\**/,tang,gnat ,ABBA/**//*/(avnz/**/);}/*//**/
|
||||
gnat(&&)tang!((||)))0(rahcteg =gnat(&&tang((&&ABBA)1-'A'=!
|
||||
'Z'=tang(&&ABBA{)enrA/***/);gnat ^-1&&cnva(tang+1,gnat);
|
||||
pain(ABBA&2/*//*\\**/,tang,gnat ,ABBA/**//*/(avnc/**/);}/*//**/
|
||||
main(tang,gnat,noon)char**gnat,**noon;{pain(tang,gnat,noon,0);}
|
||||
@@ -20,5 +20,5 @@ gnat&&gnat<='z'||'a'<=gnat&&gnat<='m'||'N'<=gnat&&gnat<='Z'
|
||||
enupgrt&&1==enrA((&&)2&gnat(&& )1-^tang(&&ABBA!(;)85- =tang
|
||||
(&&)'a\'=gnat(&&)1-==gnat(&&)4 ==ABBA(&&tang!;))))0(enupgrt=
|
||||
gnat(&&)tang!((||)))0(rahcteg =gnat(&&tang((&&ABBA;;)1-'A'=!
|
||||
'Z'=tang(&&ABBA{)enrA/***/);gnat ^-1&&znva(tang+1,gnat,1+gnat);
|
||||
'Z'=tang(&&ABBA{)enrA/***/);gnat ^-1&&znva(tang+1,gnat,1+gnat);
|
||||
main(ABBA&2/*//*\\**/,tang,gnat ,ABBA/**//*/(avnz/**/);}/*//**/
|
||||
@@ -52,7 +52,7 @@ make clobber CDEFINE="-DZ=50" alt
|
||||
```
|
||||
|
||||
|
||||
#### Try:
|
||||
### Alternate try:
|
||||
|
||||
```sh
|
||||
./plummer.alt xyzzyzzyx 5555
|
||||
|
||||
@@ -48,7 +48,7 @@ make alt
|
||||
./garry.alt <input_file >output_file
|
||||
```
|
||||
|
||||
#### Try:
|
||||
### Alternate try:
|
||||
|
||||
```sh
|
||||
|
||||
|
||||
+1
-1
@@ -57,7 +57,7 @@ echo vier | ./kang.alt
|
||||
echo uno | ./kang.alt
|
||||
```
|
||||
|
||||
#### Try:
|
||||
### Alternate try:
|
||||
|
||||
|
||||
```sh
|
||||
|
||||
@@ -568,14 +568,10 @@ numbers with non-binary digits.
|
||||
## [1989/westley](1989/westley/westley.c) ([README.md](1989/westley/README.md))
|
||||
### STATUS: main() function args not allowed - please help us fix
|
||||
|
||||
This entry is a big problem for clang due to the way it is designed. Earlier a
|
||||
change was made to let it compile with clang but although it appeared to work
|
||||
with gcc, all generated versions (see the README.md for details), this was
|
||||
either a mistake or it no longer does.
|
||||
|
||||
Thus the original was copied and this does not work at all in clang. It is very
|
||||
easy to get the first one or two to work with clang but the others result in
|
||||
compilation failures even besides clang.
|
||||
This entry is a big problem for clang due to the way it is designed. An alt
|
||||
code, added by Cody, was made that lets the program work and some of the
|
||||
generated files work but as `ver2` and `ver3` cannot be compiled even with gcc
|
||||
(syntax errors) this is in the alt version.
|
||||
|
||||
The problems with clang is that it does not allow `int` for any arg in `main()`
|
||||
except the first one, argc, and some versions of clang do not even allow a
|
||||
@@ -585,21 +581,8 @@ Cody noted that trying to fix it in some cases causes a segfault and in other
|
||||
cases it fails to generate some of the files (others are okay) at all (empty
|
||||
files). These changes were never committed.
|
||||
|
||||
Cody gives these tips on the problem: `main()`'s second, third and fourth args
|
||||
(but on fourth arg see above) are supposed to be a `char **`. This didn't use to
|
||||
be the case and some compilers like gcc don't complain. `clang` however does.
|
||||
Cody was able to get `main()` to be correct BUT a feature is that it uses ROT13
|
||||
to decrypt the function `znva` to be main in _generated files_ (see the
|
||||
[README.md](1989/westley/README.md) for details).
|
||||
|
||||
Since that function does not have the correct types when converted to main() it
|
||||
fails to compile. But as he said changing the type causes either a segfault,
|
||||
files not generated at all or files ended up with syntax errors. `ver1`, `ver2`
|
||||
and `ver3` are the problematic ones.
|
||||
|
||||
The file [westley.alt.c](1989/westley/westley.alt.c) will compile with clang
|
||||
but although it can perform some of its functions it will generate code that
|
||||
does not work.
|
||||
but although it can perform some of its functions.
|
||||
|
||||
|
||||
### STATUS: known bug - please help us fix
|
||||
|
||||
+20
-11
@@ -641,20 +641,29 @@ not his only reason :-) )
|
||||
|
||||
## [1989/westley](1989/westley/westley.c) ([README.md](1989/westley/README.md]))
|
||||
|
||||
Cody got some of the versions (the original and `ver0`) to work with some
|
||||
Cody got some of the versions (the original and `ver0` and `ver1`) to work with some
|
||||
versions of `clang`. Unfortunately there are some defects in `clang` that break
|
||||
this entry either in full or in part. Also, some of the code generated by it
|
||||
cannot be compiled by gcc either. Thus these changes are in the alt code.
|
||||
Nevertheless the main features of the program does work in the alt version, it
|
||||
just cannot generate every C file correctly.
|
||||
this entry either in full or in part. In particular the first arg to `main()`
|
||||
has to be an int and the rest have to be a `char **` but some versions do not
|
||||
allow four args. So to get past this another function was added, `pain()`, which
|
||||
takes the place of `main()` and which `main()` calls.
|
||||
|
||||
Cody provided the compile.sh script to generate the files and then try and
|
||||
compile them (which ones succeed depend on whether or not clang is the
|
||||
compiler). The script allows one to change the path of the compiler if they have
|
||||
another one. See the README.md for details.
|
||||
This was added as alt code because some of the code generated cannot be compiled
|
||||
by gcc either. To make use of this several scripts were added by Cody.
|
||||
|
||||
As there are some important notes on this in the README.md file we have left the
|
||||
details in that file and further details are in the [bugs.md](bugs.md) file.
|
||||
The [compile.sh](1989/westley/compile.sh) script that removes the generated
|
||||
code, rebuilds the program and regenerates the other code and then compiles it
|
||||
will work for compilers like gcc and one can then use the
|
||||
[try.sh](1989/westley/try.sh) script to see example input and output.
|
||||
|
||||
The [compile.alt.sh](1989/westley/compile.alt.sh) script does the same but for
|
||||
the alt code, which as noted above, can only compile the first two generated
|
||||
versions, at least at this time. The [try.alt.sh](1989/westley/try.alt.sh)
|
||||
script is like the [try.sh](1989/westley/try.sh) script but it uses the alt code
|
||||
and alt generated versions instead.
|
||||
|
||||
Both scripts allow one to specify the compiler which is probably more useful for
|
||||
`compile.sh`.
|
||||
|
||||
|
||||
## [1990/baruch](1990/baruch/baruch.c) ([README.md](1990/baruch/README.md]))
|
||||
|
||||
Reference in new issue
Block a user