diff --git a/2024/ferguson1/.entry.json b/2024/ferguson1/.entry.json index e97cc81f7..6d7ed83b0 100644 --- a/2024/ferguson1/.entry.json +++ b/2024/ferguson1/.entry.json @@ -45,6 +45,14 @@ "display_via_github" : true, "entry_text" : "original source code with minor bug fix" }, + { + "file_path" : "prog.gotos.c", + "inventory_order" : 90, + "OK_to_edit" : true, + "display_as" : "c", + "display_via_github" : true, + "entry_text" : "prog.c with merged lines to show mass of gotos" + }, { "file_path" : "prog.orig.c", "inventory_order" : 50, diff --git a/2024/ferguson1/README.md b/2024/ferguson1/README.md index ca78a05c4..ba65efa1b 100644 --- a/2024/ferguson1/README.md +++ b/2024/ferguson1/README.md @@ -85,8 +85,14 @@ encrypted one even encrypted emojis without having to decrypt them in order to print them (and everything else). I have kept references to encryption in this file even after publication. I do have a copy of it if anyone is interested. +**SUGGESTION**: if you dare, try opening +[prog.gotos.c](%%REPO_URL%%/2024/ferguson1/prog.gotos.c) in an editor with +syntax highlighting and then highlight `goto`. Alternatively, try it with `grep` +if your grep has colours enabled (probably easier). + +
-### A Pact With the Devil On the Oregon Trail (...and his 149 regrets of goto) +### A Pact With the Devil On the Oregon Trail (...and his 134 149 regrets of goto)
The _Go To Hell In A Handcart Travel Company_ **PROUDLY** welcomes all sinners to diff --git a/2024/ferguson1/index.html b/2024/ferguson1/index.html index 6a5a367f7..1e63a16d7 100644 --- a/2024/ferguson1/index.html +++ b/2024/ferguson1/index.html @@ -525,8 +525,12 @@ really matter.

encrypted one even encrypted emojis without having to decrypt them in order to print them (and everything else). I have kept references to encryption in this file even after publication. I do have a copy of it if anyone is interested.

+

SUGGESTION: if you dare, try opening +prog.gotos.c in an editor with +syntax highlighting and then highlight goto. Alternatively, try it with grep +if your grep has colours enabled (probably easier).

-

A Pact With the Devil On the Oregon Trail (…and his 149 regrets of goto)

+

A Pact With the Devil On the Oregon Trail (…and his 134 149 regrets of goto)

The Go To Hell In A Handcart Travel Company PROUDLY welcomes all sinners to our GREATEST destination yet, with:

@@ -3749,6 +3753,7 @@ helps you appreciate the careful design even more.prog.alt.c - alternate source code
  • prog.orig.c - original source code
  • commented.c - commented version of the game
  • +
  • prog.gotos.c - prog.c with merged lines to show mass of gotos
  • addpadding.c - add padding from data source files
  • bytecheck.c - read data.src and print out single-byte chars
  • bytecount.c - print each string with locations
  • diff --git a/2024/ferguson1/prog.gotos.c b/2024/ferguson1/prog.gotos.c new file mode 100644 index 000000000..fe9b741da --- /dev/null +++ b/2024/ferguson1/prog.gotos.c @@ -0,0 +1,42 @@ +#include +#include +#include +#include +#include +long x(long y, long z){ return rand()%(z-y+1)+y; } +unsigned m,D,Q,v,l,f,X,z,B,i,h, + r,u,d,e; long +O,R,E,G,O,N, T,R,A,I,L,*o[]={ &O,&R,&E,&G,&O,&N} ,a,t[7],q,M, b=666,c,W; char *y,*p; FILE*K; size_t J; +#define w(i) { V(i); V(4); goto hell; goto M; } +long Z(long x){ return x * 1663; } +#define S(x,z) while(scanf(&y[Z(x)],&z)!=1)while(getchar()!='\n'); +void V(long x){printf("%s",&y[Z(x)]);}long k(){return E>0?x(0,99)>49:0;}int main(){switch(1){j:if(z)goto A;E*=5;B: +printf(&y[Z(12)],T);if(z){goto f;}goto PP;default:srand(time(0));K=fopen(DATA,"r");if(!K||getdelim(&y,&J,EOF,K)<0)goto + hell; goto M;OO:if(b<1){if(a){w(40)PP:goto G;}if(f)w(41)w(45)g:goto S;}w(M>2169?47:45) + hell:return + 666;rr:;goto CC;yy:{if(b<1||M<0||M>2169){goto _;F:V(51);R+=18;goto L;}goto i;P:for(X=1;X<--(unsigned){7};){goto kk; +BB:*o[X]+=(X==2?t[X]*5:t[X]);goto HA;TA:++X;goto at;ZZ:;}printf(&y[Z(11)],R,E,G,O,N,T,b,M);if(x(0,1))goto I;R:if(R<14)V(37); +if(z){z=0;l:{if(k()){if(x(0,9)>4){V(52);R+=23;if(!x(0,9)){goto r;L:goto II;}c:;}else{goto F;r:goto c;qq:{V(53);goto zz;}II:;}} +else{goto qq;}zz:E-=9;M-=45;}goto C;y:V(42);S(2,r)switch(r){M:V(1);v:memset(&t,0,sizeof t);goto N;D:{if(k()){goto dd;ii:V(f=79); +b-=80;T/=4;goto jj;ee:;}else{goto oo;dd:V(a=29);T+=70;goto ee;x:V(X+--(unsigned){6});if(z){S(3,t[X])if(t[X]<0||t[X]> + 666 ){V(14); goto x; goto + heaven ;ET:L-=t[u]; goto XT;}L=T;for(u=0;u<6;++u){goto ET;XT:;}if(L<0){V(46);memset(&t,0,sizeof t);goto v;}} + else{S(3,*(o[X]))if(*o[X]<0||*o[X]> + 666) {V(14);goto x;} +T=1666-O-R-E-G-0-N;if(T<0){V(46);O=R=E=G=N=0;goto v;LL:*o[X]=0;uu:++X;goto ZZ;}}goto bb;}}goto s;case 3:goto X;case 1:z=1;M-=45; +goto v;case 2:goto T;}goto y;O:{V(e=19);O-=40;R+=40;}goto E;i:if(O<1){goto d;}else{goto vv;mm:;}goto P;go:V(81);R+=9;N+=3;goto +to;}else{goto y;HA:T-=X[t];goto TA;A:for(X=1;X<6;){goto BB;kk:if(*o[X]<0)goto LL;goto uu;QQ:V(B=38);goto JJ;at:;}goto B;}T:l=1; +if(E<9){goto h;}else{goto l;h:V(16);goto C;DD:goto u;}C:l=0;f:z=0;X:if(R<1){goto e;U:w(24)K:R-=R>23?23:R>18?18:R>13?13:R;goto Y; +TT:V(v=15);O=0;goto P;}else{goto K;}goto tt;Y:switch(q=x(0,22)){case 1:V(95);R+=5;goto Z;case 18:V(26);goto Z;case 13:V(28);goto Z; +case 2:O-=40;V(71);goto Z;case 3:V(a=76);b-=70;goto W;case 4:V(77);N-=7;M-=7;goto Z;case 5:case 10:if(q<6){goto ha;m:V(56);goto D; +CC:goto OO;o:;}else{goto m;oo:V(f=62);M-=50;b-=35;s:;}goto Z;a:goto H;case 9:case 19:V(30);goto Z;case 20:V(32);goto Z;case 21:V(31);goto Z;case 6:goto g;case 16:case 22:V(49);goto Z;case 17:V(72);goto Z;case 7:V(83);M-=10;goto Z;case 8:V(86);R-=30;G-=20;O-=40;V +:switch(x(1,9)){case 2:if(q>9){switch(x(1,2)){q:R+=40;goto Y;case 1:{switch(x(2,5)){case 2:V(a=54);goto MM;b:w(48)case 3:goto J;N: +goto Q;case 4:i=17;}}case 2:V(5);}goto k;u:if(M<1951||W){goto W;}W=1;if(!d&&!x(0,4)){V(75);d=1;R+= 50;}if(!x(0,3)){w(x(0,4)?84:x(0,4)?33:34)e:if(O>39){goto xx;vv:v=0;goto mm;d:{if(!v)goto TT;goto P;}}goto U;}if(x(0,9)<5)w:V(35);c=1;M-=101;++E;k:M-=10;W:if(x(0,1)){ +if(d)V(39);if(e)V(25);}while(i)heaven:{w(i)}if(!B&&(f||a)){if(d&&a)V(91);if(T<666){goto QQ;KK:Q=a?1:Q;h=f?1:h;f=a=0;V(93);T-=666;} +else{goto KK;}JJ:;}b-=f?15:h?5:0;b-=a?5:Q?15:0;M+=170;M+=O>99?30:-99;b-=10;goto z;J:V(a=54);}goto k;MM:goto k;default:if(q>10){ +goto k;}if(q>7){if(N<5){w(99)goto M;G:goto yy;}V(13);N-=5;}goto Z;_:goto rr;S:if(E>1999){w(27)I:goto a;}V(82);M-=9;N-=5;R-=20;goto Z; +}M-=17;goto Z;case 14:V(74);goto Z;case 15:V(x(0,1)?69:68);goto Z;ha:V(78);if(k()){goto go;to:;}else{goto ii;jj:;}goto o;case 11: +goto V;case 12:V(94);M-=5;b-=19;N-=5;goto Z;tt:goto Y;case 0:V(20);Z:;}if(O>39&&!x(0,9)){goto O;xx:V(e=x(0,1)?18:19);O-=40;goto q;} +E:if(M<951)goto W;if(G<36){goto b;}if(x(0,9)>2)goto n;V(96);if(x(0,1)){goto p;Q:for(X=1;X<6;++X){goto x;bb:;}goto j;}V(97);M-=60; +goto n;H:goto R;p:if(x(0,9)<3)goto t;V(21);M-=99;goto n;t:V(22);M-=85;n:if(m){goto DD;}m=1;if(x(0,9)>5)goto w;V(23);z:;}if(A++<21) +goto yy;goto _;}}