Fix infinite loop in 1989/ovdluhe
As Landon said it is a bug (after I asked about it) I have fixed it. Without this fix the program printed the same thing over and over again in some cases. The problem was a for() loop that didn't always have the pointer incremented. It looks like I could have got away with just updating the increment part of the loop but I didn't do that as I didn't see it at first. The optimiser was disabled. That might not be strictly necessary but I had it disabled for a time so I have kept it disabled. Also I removed my name in the README.md: this was missed when the much better idea of a general thanks file was come up with. When testing the fix I came across part of my name which made me check. I have not yet typo/format checked this file or any of 1989 so that was not done. That might or might not happen in part or in whole later today but either way it'll be started soon.
This commit is contained in:
1 parent
0262590956
commit
f882ea84dd
5 files changed
+15
-7
No files matched your search
@@ -68,7 +68,7 @@ CINCLUDE=
|
||||
|
||||
# Optimization
|
||||
#
|
||||
OPT= -O3
|
||||
OPT=
|
||||
|
||||
# Default flags for ANSI C compilation
|
||||
#
|
||||
|
||||
@@ -38,8 +38,7 @@ 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 which [Cody Boone
|
||||
Ferguson](/winners.html#Cody_Boone_Ferguson) did for us. To use try:
|
||||
it's a `#define` it's easy to set up. To use try:
|
||||
|
||||
```sh
|
||||
make CFLAGS="-DP=9" clobber alt
|
||||
@@ -47,6 +46,7 @@ make CFLAGS="-DP=9" clobber alt
|
||||
|
||||
Use `ovdluhe.alt` as you would `ovdluhe`.
|
||||
|
||||
|
||||
## Judges' remarks:
|
||||
|
||||
Run this program using your favorite text file as input. Files
|
||||
|
||||
@@ -20,7 +20,7 @@ main(){ape pe,*ep=a;srand((EP)time((long)E));
|
||||
while(((*(ep++)=getchar())!=-A)&&((ep-a)<PE));
|
||||
*(ae= --ep)=E;for(ap=E;ap<=P;){APE;if(pe=PA())
|
||||
{putchar(pe);if(ap<P){p[ap]=pe;ap++;}else{
|
||||
ep=p+A;while(*ep) *(ep-A)= *(ep++); *(ep-A)=pe;}}else break;}}
|
||||
ep=p+A;while(*ep) *(ep-A)= *(ep++); *(ep-A)=pe;++ap;}}else break;}}
|
||||
PA(){EA ape pe,*ep=a,pa,Ap=E;for(ep=a;ep<ae-P;ep++)
|
||||
if(!strncmp(ep,p,ap)){e[*(ep+ap)]++;Ap++;}if(!Ap)return(Ap);
|
||||
pa=rand()%Ap+A;pe=~E,Ap=!Ap;while((Ap+=e[++pe])<pa);return(pe);}
|
||||
@@ -14,7 +14,7 @@ main(){ape pe,*ep=a;srand((EP)time((long)E));
|
||||
while(((*(ep++)=getchar())!=-A)&&((ep-a)<PE));
|
||||
*(ae= --ep)=E;for(ap=E;ap<=P;){APE;if(pe=PA())
|
||||
{putchar(pe);if(ap<P){p[ap]=pe;ap++;}else{
|
||||
ep=p+A;while(*ep) *(ep-A)= *(ep++); *(ep-A)=pe;}}else break;}}
|
||||
ep=p+A;while(*ep) *(ep-A)= *(ep++); *(ep-A)=pe;++ap;}}else break;}}
|
||||
PA(){EA ape pe,*ep=a,pa,Ap=E;for(ep=a;ep<ae-P;ep++)
|
||||
if(!strncmp(ep,p,ap)){e[*(ep+ap)]++;Ap++;}if(!Ap)return(Ap);
|
||||
pa=rand()%Ap+A;pe=~E,Ap=!Ap;while((Ap+=e[++pe])<pa);return(pe);}
|
||||
Reference in new issue
Block a user