Merge pull request #164 from xexyl/1990-dds
This commit is contained in:
3 files changed
+11
-10
No files matched your search
+1
-1
@@ -1,6 +1,6 @@
|
||||
10 REM Lunar Lander
|
||||
20 REM By Diomidis Spinellis
|
||||
30 PRINT "You aboard the Lunar Lander about to leave the spacecraft."
|
||||
30 PRINT "You board the Lunar Lander about to leave the spacecraft."
|
||||
60 GOSUB 4000
|
||||
70 GOSUB 1000
|
||||
80 GOSUB 2000
|
||||
|
||||
+5
-4
@@ -14,14 +14,16 @@
|
||||
[Yusuke Endoh](/winners.html#Yusuke_Endoh) fixed this for modern systems. Thank
|
||||
you Yusuke!
|
||||
|
||||
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) removed the erroneous
|
||||
prototype to `fopen()` and made this use `fgets()` instead of `gets()` to make
|
||||
it safer. He also fixed a segfault in the case that the file cannot be loaded.
|
||||
Thank you Cody for your assistance!
|
||||
|
||||
### To run
|
||||
|
||||
./dds
|
||||
|
||||
|
||||
NOTE: this entry uses `gets()` so you might get a warning when compiling and
|
||||
running this entry.
|
||||
|
||||
### Try:
|
||||
|
||||
Give the following lines as input:
|
||||
@@ -31,7 +33,6 @@ Give the following lines as input:
|
||||
|
||||
NOTE: this is case sensitive.
|
||||
|
||||
|
||||
## Judges' comments:
|
||||
|
||||
|
||||
|
||||
+5
-5
@@ -7,17 +7,17 @@
|
||||
#define _ return
|
||||
#define R 999
|
||||
typedef char*A;int*C,E[R],L[R],M[R],P[R],l,i,j;char B[R],F[2];A m[12*R],malloc
|
||||
(),p,q,x,y,z,s,d,f,fopen();A Q(s,o)A s,o;{for(x=s;*x;x++){for(y=x,z=o;*z&&*y==
|
||||
*z;y++)z++;if(z>o&&!*z)_ x;}_ 0;}main(){m[11*R]="E";while(puts("Ok"),gets(B)
|
||||
)switch(*B){X'R':C=E;l=1;for(i=0;i<R;P[i++]=0);while(l){while(!(s=m[l]))l++;if
|
||||
(),p,q,x,y,z,s,d;FILE *f;A Q(s,o)A s,o;{for(x=s;*x;x++){for(y=x,z=o;*z&&*y==
|
||||
*z;y++)z++;if(z>o&&!*z)_ x;}_ 0;}main(){m[11*R]="E";while(puts("Ok"),fgets(B,R,stdin),
|
||||
B[strlen(B)-1]='\0',1)switch(*B){X'R':C=E;l=1;for(i=0;i<R;P[i++]=0);while(l){while(!(s=m[l]))l++;if
|
||||
(!Q(s,"\"")){U("<>",'#');U("<=",'$');U(">=",'!');}d=B;while(*F=*s){*s=='"'&&j
|
||||
++;if(j&1||!Q(" \t",F))*d++=*s;s++;}*d--=j=0;if(B[1]!='=')switch(*B){X'E':l=-1
|
||||
X'R':B[2]!='M'&&(l=*--C)X'I':B[1]=='N'?gets(p=B),P[*d]=S():(*(q=Q(B,"TH"))=0,p
|
||||
X'R':B[2]!='M'&&(l=*--C)X'I':B[1]=='N'?fgets(p=B,R,stdin),P[*d]=S():(*(q=Q(B,"TH"))=0,p
|
||||
=B+2,S()&&(p=q+4,l=S()-1))X'P':B[5]=='"'?*d=0,puts(B+6):(p=B+5,printf("%d\n",S
|
||||
()))X'G':p=B+4,B[2]=='S'&&(*C++=l,p++),l=S()-1 X'F':*(q=Q(B,"TO"))=0;p=B+5;P[i
|
||||
=B[3]]=S();p=q+2;M[i]=S();L[i]=l X'N':++P[*d]<=M[*d]&&(l=L[*d]);}else p=B+2,P[
|
||||
*B]=S();l++;}X'L':N printf(I)X'N':N(free(m[i]),0),m[i]=0 X'B':_ 0 t('S',5,"w",N
|
||||
fprintf(f,I))t('O',4,"r",while(fgets(B,R,f))(*Q(B,"\n")=0,G()))X 0:default:G()
|
||||
f&&fprintf(f,I))t('O',4,"r",while(f&&fgets(B,R,f))(*Q(B,"\n")=0,G()))X 0:default:G()
|
||||
;}_ 0;}G(){l=atoi(B);m[l]&&(free(m[l]),0);(p=Q(B," "))?strcpy(m[l]=malloc(strlen(p
|
||||
)),p+1):(m[l]=0,0);}O(S,J,'=',==,'#',!=)O(J,K,'<',<,'>',>)O(K,V,'$',<=,'!',>=)
|
||||
O(V,W,'+',+,'-',-)O(W,Y,'*',*,'/',/)Y(){int o;_*p=='-'?p++,-Y():*p>='0'&&*p<=
|
||||
|
||||
Reference in new issue
Block a user