Reverse reversal of alt/original 2005/giljade code
In other words now the version that can compile with clang is the giljade.c and the other is giljade.alt.c. The reason is that the actual award is about a 2D puzzle and this still works with the clang compilable version. It also lets those who are forced to use clang compile the code and at least enjoy the puzzle. The Makefile has been updated to remove the note about clang or rather reworded so that the user is made aware that the alt version will run the self-test but the original will not and to see the README.md for more details.
This commit is contained in:
1 parent
85599f1571
commit
dbd9994ca4
5 files changed
+85
-74
No files matched your search
@@ -134,8 +134,8 @@ all: data ${TARGET}
|
||||
supernova deep_magic magic charon pluto
|
||||
|
||||
${PROG}: ${PROG}.c
|
||||
@echo "NOTE: this version requires non-standard args to main() and will fail with"
|
||||
@echo "some compilers like clang. Try make alt for such compilers."
|
||||
@echo "NOTE: this version cannot successfully run the self-test. Use make alt"
|
||||
@echo "for a version which will work. See README.md for why it is this way."
|
||||
${CC} ${CFLAGS} $< -o $@ ${LIBS}
|
||||
|
||||
# alternative executable
|
||||
|
||||
+34
-32
@@ -11,9 +11,15 @@ make
|
||||
```
|
||||
|
||||
NOTE: if you do not have access to a compiler that lets you have alternative arg
|
||||
types to `main()` you must use the alternate code. This is hopefully just a
|
||||
temporary problem but it's a complicated problem as well. See 'To run' and
|
||||
'Alternate code' sections as well as [bugs.md](/bugs.md) for more information.
|
||||
types to `main()` the self-test feature will fail. If your compiler does not
|
||||
have this defect you can use the Alternate code described below. The reason to
|
||||
have it as the alternate version is that there is more to the entry that can
|
||||
still be enjoyed with compilers with the `main()` args defect including the
|
||||
primary purpose of the entry, a puzzle.
|
||||
|
||||
Hopefully this will be resolved in time where there is no need for an alternate
|
||||
version but it's a complicated one. See also the [bugs.md](/bugs.md) file for
|
||||
more information.
|
||||
|
||||
## To run:
|
||||
|
||||
@@ -21,23 +27,25 @@ temporary problem but it's a complicated problem as well. See 'To run' and
|
||||
./giljade
|
||||
```
|
||||
|
||||
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this for modern
|
||||
systems but there was a problem with both the clang fixed version (which Landon
|
||||
originally put in but Cody further fixed so that it would work somewhat) and the
|
||||
original version. There remains a problem with the clang version.
|
||||
After Landon fixed the entry to compile with clang (but see above and below)
|
||||
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) noticed this does not
|
||||
work at all in modern systems. He fixed this to work but he notes that the fix
|
||||
to let clang compile it breaks the self-test feature.
|
||||
|
||||
The problem that was showing up is that with either optimising or anything but
|
||||
32-bit was used it would not work. The optimising cannot be used still but it
|
||||
now works with both 32-bit and 64-bit. The solution has to do with the size
|
||||
difference between `int` and `long` so that the `long *E` is now `int *E`. This
|
||||
solves a specific problem for linux (32-bit, 64-bit) and macOS (arm64).
|
||||
The problem that was showing up is that with either optimising or if anything
|
||||
but 32-bit (as in `-m32`) was used it would not work (at least in 64-bit
|
||||
systems?). The optimising cannot be used still but it now works with both 32-bit
|
||||
and 64-bit. The solution has to do with the size difference between `int` and
|
||||
`long` so that the `long*E` is now `int*E`. This solves a specific problem for
|
||||
linux (32-bit, 64-bit) and macOS (arm64).
|
||||
|
||||
But as noted there is another problem with clang: the self-test feature only
|
||||
completely works with the original version, not the one that will compile with
|
||||
clang. The alt version only passes some of its tests. If your compiler does not
|
||||
have the defect that clang has about arg types to `main()` you can use
|
||||
successfully run the self-test feature completely. Otherwise see the Alternate
|
||||
code section below.
|
||||
completely works with the original version ([giljade.alt.c](giljade.alt.c)), not
|
||||
the one that will compile with clang ([giljade.c](giljade.c)). The alternate
|
||||
version, which will not compile with clang, is the only one that passes the
|
||||
self-tests. If your compiler does not have the defect that clang has about arg
|
||||
types to `main()` see the Alternate code section below at least for the
|
||||
self-test feature.
|
||||
|
||||
Thank you Cody for your assistance!
|
||||
|
||||
@@ -61,23 +69,11 @@ vi out
|
||||
|
||||
Press ^F (control F) repeatedly.
|
||||
|
||||
### Also try:
|
||||
|
||||
```sh
|
||||
./giljade > out
|
||||
./giljade out
|
||||
```
|
||||
|
||||
NOTE: this will only completely work with the original version at least at this
|
||||
time.
|
||||
|
||||
### Alternate code:
|
||||
|
||||
This version is compilable with clang but as noted the self-test feature is
|
||||
incomplete. It did not work at all but Cody added a hack to make part of it work
|
||||
until this can be looked at further. See also the [bugs.md](/bugs.md) file.
|
||||
|
||||
If you have clang you can use this version like:
|
||||
This version will work only with compilers that let you have alternate types to
|
||||
the args of `main()` and will also successfully run its self-test (the other
|
||||
version only runs some of them successfully). To use:
|
||||
|
||||
```sh
|
||||
make alt
|
||||
@@ -85,6 +81,12 @@ make alt
|
||||
|
||||
Use `giljade.alt` as you would `giljade` above.
|
||||
|
||||
#### Try:
|
||||
|
||||
```sh
|
||||
./giljade.alt > out
|
||||
./giljade.alt out
|
||||
```
|
||||
|
||||
## Judges' remarks:
|
||||
|
||||
|
||||
@@ -10,14 +10,14 @@
|
||||
\
|
||||
)u=(f&p)i(m) ;s=u&E[3];I(t(m),3)s=(u)a &E[l];I(t(m\
|
||||
),l)u=u>>5-m &u;s=u&E[3-l];I(t(m),3-l) s=(u)a&*E;I\
|
||||
(t(m),(0));; /*echo/Line/%d;sed/-n/-e/ %d,%dp/%s/|sed*/
|
||||
/*-e/ 's,intUa,int/ Ua,g'>c.c;cc/c.c/-Wno-implicit-function-declaration /-c*/
|
||||
;;char*A=0,*_,*R,*Q, D[9999],*r,l[9999],T=42, M,V=32;int*E,k[9999],B[1 <<+21],*N=B+
|
||||
(t(m),(0));; /*echo/Line/%d;sed/-n/-e/ %d,%dp/%s>*/
|
||||
/*c.c;cc/c.c /-c*/;;char*A=0,*_,*R,*Q, D[9999],*r,l
|
||||
[9999],T=42, M,V=32;int *E,k[9999],B[1 <<+21],*N=B+
|
||||
1234567,q=0, h=3,j=2,O,b,f,u,s,c,a,t,e ,d;C(){F(h=N
|
||||
[3];(B[h]&&+ memcmp(N,B+B[h],16));h=B[ h]+4);B[h]||
|
||||
(B[h]=N-B,N= N+6);}main(int Ua,char **wa){char*U
|
||||
=Ua;int**w= wa;;F(_=A=D+6666,A[fread(A,1,3333,fopen
|
||||
(__FILE__, "r"))]=0;*++ _;h||(*_=V))
|
||||
(B[h]=N-B,N= N+6);}main(char*U,int*w[] ){;;F(_=A=D+
|
||||
6666,A[fread (A,1,3333,fopen(__FILE__, "r"))]=0;*++
|
||||
_;h||(*_=V))
|
||||
*_-59|_[1]-* _||(h&&(*_=+ 35),h---2||(_[9]=V));;F(_
|
||||
=A;*_;_++)10 -*_&&*_-V&&( *_-92)&&(k[q]=isalnum(l[q
|
||||
]=*_),q++);M =47;*(E=N-6) =64;E[1]=289;E[2]=270336;
|
||||
|
||||
@@ -10,14 +10,14 @@
|
||||
\
|
||||
)u=(f&p)i(m) ;s=u&E[3];I(t(m),3)s=(u)a &E[l];I(t(m\
|
||||
),l)u=u>>5-m &u;s=u&E[3-l];I(t(m),3-l) s=(u)a&*E;I\
|
||||
(t(m),(0));; /*echo/Line/%d;sed/-n/-e/ %d,%dp/%s>*/
|
||||
/*c.c;cc/c.c /-c*/;;char*A=0,*_,*R,*Q, D[9999],*r,l
|
||||
[9999],T=42, M,V=32;int*E,k[9999],B[1 <<+21],*N=B+
|
||||
(t(m),(0));; /*echo/Line/%d;sed/-n/-e/ %d,%dp/%s/|sed*/
|
||||
/*-e/ 's,intZ,int/ Z,g'>c.c;cc/c.c/-Wno-implicit-function-declaration /-c*/
|
||||
;;char*A=0,*_,*R,*Q, D[9999],*r,l[9999],T=42, M,V=32;int *E,k[9999],B[1 <<+21],*N=B+
|
||||
1234567,q=0, h=3,j=2,O,b,f,u,s,c,a,t,e ,d;C(){F(h=N
|
||||
[3];(B[h]&&+ memcmp(N,B+B[h],16));h=B[ h]+4);B[h]||
|
||||
(B[h]=N-B,N= N+6);}main(char*U,int*w[] ){;;F(_=A=D+
|
||||
6666,A[fread (A,1,3333,fopen(__FILE__, "r"))]=0;*++
|
||||
_;h||(*_=V))
|
||||
(B[h]=N-B,N= N+6);}main(int Z,char*Y[] ){char*U=Z;int**w=Y;
|
||||
;;F(_=A=D+6666,A[fread(A,1,3333,fopen
|
||||
(__FILE__, "r"))]=0;*++ _;h||(*_=V))
|
||||
*_-59|_[1]-* _||(h&&(*_=+ 35),h---2||(_[9]=V));;F(_
|
||||
=A;*_;_++)10 -*_&&*_-V&&( *_-92)&&(k[q]=isalnum(l[q
|
||||
]=*_),q++);M =47;*(E=N-6) =64;E[1]=289;E[2]=270336;
|
||||
|
||||
Reference in new issue
Block a user