[Fwd: Re: [linux-support]Für C-Programmierer :o)]

Christian Schweingruber chrigul at lorraine.ch
Fri Oct 8 10:45:30 CEST 2004


hallo zämä

michel wrote:
> michel wrote:
> 
> |
> | Für C gibt/gab es andere Wettbewerbe. Ich muss in meinen Archiven
> | schauen, einige Programme sind bemerkenswert. Kennt jemand maze.c ?
> |
> |
> Die Disketten halten noch, hier sind diese C Programme. Man kriegt
> manchmal warnings mit gcc. Eine saubere Syntax or die Lesbarkeit waren
> nicht das Ziel...
> 
> maze.c (die Font Courrier-Font ist sehr empfohlen):
> $ more maze.c
> char*M,A,Z,E=40,J[40],T[40];main(C){for(*J=A=scanf(M="%d",&C);
> --            E;             J[              E]             =T
> [E   ]=  E)   printf("._");  for(;(A-=Z=!Z)  ||  (printf("\n|"
> )    ,   A    =              39              ,C             --
> )    ;   Z    ||    printf   (M   ))M[Z]=Z[A-(E   =A[J-Z])&&!C
> &    A   ==             T[                                  A]
> |6<<11<rand()||!C&!Z?J[T[E]=T[A]]=E,J[T[A]=A-Z]=A,"_.":" |"];}
> 
> Beim Ausführen kriege ich "Segmentation fault". Auf einer alten
> HP-9000 Workstation (HP-UX V9 oder 10) bekam man ein Labyrinth. Kann
> jemand probieren?
auf
http://www.ascii-art.de/ascii/mno/maze.txt
finden sich eine korrigierte Version:
maze.c - John Tromp (tromp at piring.cwi.nl)

char*M,A,Z,E=40,J[40],T[40];main(C){for(*J=A=scanf(M="%d",&C);
--            E;             J[              E]             =T
[E   ]=  E)   printf("._");  for(;(A-=Z=!Z)  ||  (printf("\n|"
)    ,   A    =              39              ,C             --
)    ;   Z    ||    printf   (M   ))M[Z]=Z[A-(E   =A[J-Z])&&!C
&    A   ==             T[                                  A]
|6<<27<rand()||!C&!Z?J[T[E]=T[A]]=E,J[T[A]=A-Z]=A,"_.":" |"];}

[i got segmentation-fault with this][i486 gcc2.6 linux1.3.0]


maze.ansi.c - antonyc at nntp-server.caltech.edu (Bill T. Cat)

char*M,A,Z,E=40,J[80],T[3];main(C){for(M=J+E,*J=A=scanf("%d",&
C)            ;--            E;J             [E            ]=M
[E   ]=  E)   printf("._");  for(;(A-=Z=!Z)  ||  (printf("\n|"
)    ,   A    =              39              ,C             --
)    ;   Z    ||    printf   (T   ))T[Z]=Z[A-(E   =A[J-Z])&&!C
&    A   ==             M[                                  A]
|6<<11<rand()||!C&!Z?J[M[E]=M[A]]=E,J[M[A]=A-Z]=A,"_.":" |"];}
      .
     /|\
      |
      `---- i had to change this to 27 (my rand.seed default is 1)


with an input value of 5 (rows)
produces:
._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
| ._| . . ._| | |_._._. . ._|_._._._._. ._|_. ._|_._. ._| | . ._|_. | . ._._. |
| ._|_| |_. | | | | ._._|_._|_._. . |_. | | | ._._| |_._._._| | ._. ._| . . |_|
|_._._._. | ._|_. ._._._. | | ._. |_._. . | ._._| |_. | . ._._._. |_. | |_|_| |
| | . |_._| . ._._._| ._._. ._._| | | |_| . | |_. . ._|_|_| ._._. |_._|_| . | |
|_._|_._._._|_._._._|_|_._._._|_._|_._._._|_._._._|_._._._._|_._._._._._._|_._|
|


and using this - maze.ansi40.c

char*M,A,Z,E=20,J[40],T[3];main(C){for(M=J+E,*J=A=scanf("%d",&
C)            ;--            E;J             [E            ]=M
[E   ]=  E)   printf("._");  for(;(A-=Z=!Z)  ||  (printf("\n|"
)    ,   A    =              19              ,C             --
)    ;   Z    ||    printf   (T   ))T[Z]=Z[A-(E   =A[J-Z])&&!C
&    A   ==             M[                                  A]
|6<<27<rand()||!C&!Z?J[M[E]=M[A]]=E,J[M[A]=A-Z]=A,"_.":" |"];}

cc -o maze40 maze.ansi40.c
maze40
with an input value of 15
gave:
._._._._._._._._._._._._._._._._._._._
| |_. ._._| |_._._. |_. | |_. |_. ._._|
|_. | | | |_. . |_._._._._. ._|_. | ._|
| . | | |_. |_| | | ._._._. |_. ._. | |
|_| . ._._._._| | |_. ._| | |_._| | | |
|_. | ._|_. |_._._. |_| | | | | | |_. |
| | |_| ._. | | |_. . |_. | ._| | ._. |
|_._._. | ._._|_._._| |_. ._._. . . | |
|_._._. | ._._. ._._|_. ._._. | |_|_|_|
| | | ._|_|_._. | . |_. . ._|_| ._. ._|
|_. | . |_._. | . |_. ._| |_. | ._|_| |
|_._. |_. . . |_| ._|_| |_| | ._. ._| |
|_._. . | |_|_._| . ._._._| |_._| |_. |
| | . |_| ._._| | |_|_. | ._._. ._._| |
| |_| |_._._._._| | |_. |_. | |_|_. | |
|_._._|_._._._._._|_._._._._._._._._._|
|

watching vi solve the maze is quite entertaining
(the maze.vi.macros are binary

Gruess Chrigu
gefunden mit http://www.google.ch/search?hl=de&q=maze.c&btnG=Google-Suche&meta=

> 
> Etwas das läuft:
> 
> $ more laman.c
> a[900];         b;c;d=1         ;e=1;f;         g;h;O;          main(k,
> l)char*         *l;{g=          atoi(*          ++l);           for(k=
> 0;k*k<          g;b=k           ++>>1)          ;for(h=         0;h*h<=
> g;++h);         --h;c=(         (h+=g>h         *(h+1))         -1)>>1;
> while(d         <=g){           ++O;for         (f=0;f<         O&&d<=g
> ;++f)a[         b<<5|c]         =d++,b+=        e;for(          f=0;f<O
> &&d<=g;         ++f)a[b         <<5|c]=         d++,c+=         e;e= -e
> ;}for(c         =0;c<h;         ++c){           for(b=0         ;b<k;++
> b){if(b         <k/2)a[         b<<5|c]         ^=a[(k          -(b+1))
> <<5|c]^=        a[b<<5          |c]^=a[         (k-(b+1         ))<<5|c]
> ;printf(        a[b<<5|c        ]?"%-4d"        :"    "         ,a[b<<5
> |c]);}          putchar(        '\n');}}        /*Mike          Laman*/
> 
> wiederum, mit einer Courrier-Font sieht es gut aus und das Ergebnis
> auch :-)
> $ laman.out 300
> 290 289 288 287 286 285 284 283 282 281 280 279 278 277 276 275 274 273
> 291 226 225 224 223 222 221 220 219 218 217 216 215 214 213 212 211 272
> 292 227 170 169 168 167 166 165 164 163 162 161 160 159 158 157 210 271
> 293 228 171 122 121 120 119 118 117 116 115 114 113 112 111 156 209 270
> 294 229 172 123 82  81  80  79  78  77  76  75  74  73  110 155 208 269
> 295 230 173 124 83  50  49  48  47  46  45  44  43  72  109 154 207 268
> 296 231 174 125 84  51  26  25  24  23  22  21  42  71  108 153 206 267
> 297 232 175 126 85  52  27  10  9   8   7   20  41  70  107 152 205 266
> 298 233 176 127 86  53  28  11  2   1   6   19  40  69  106 151 204 265
> 299 234 177 128 87  54  29  12  3   4   5   18  39  68  105 150 203 264
> 300 235 178 129 88  55  30  13  14  15  16  17  38  67  104 149 202 263
> ~    236 179 130 89  56  31  32  33  34  35  36  37  66  103 148 201 262
> ~    237 180 131 90  57  58  59  60  61  62  63  64  65  102 147 200 261
> ~    238 181 132 91  92  93  94  95  96  97  98  99  100 101 146 199 260
> ~    239 182 133 134 135 136 137 138 139 140 141 142 143 144 145 198 259
> ~    240 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 258
> ~    241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256
> 
> 
> $ more tetris.c
> long
> h[4];t(){h[3]-=h[3]/3000;setitimer(0,h,0);}c,d,l,v[]={(int)t,0,2},w,s,I,K
> =0,i=276,j,k,q[276],Q[276],*n=q,*m,x=17,f[]={7,-13,-12,1,8,-11,-12,-1,9,-1,1, 
> 
> 12,3,-13,-12,-1,12,-1,11,1,15,-1,13,1,18,-1,1,2,0,-12,-1,11,1,-12,1,13,10,-12, 
> 
> 1,12,11,-12,-1,1,2,-12,-1,12,13,-12,12,13,14,-11,-1,1,4,-13,-12,12,16,-11,-12, 
> 
> 12,17,-13,1,-1,5,-12,12,11,6,-12,12,24};u(){for(i=11;++i<264;)if((k=q[i])-Q[i] 
> 
> ){Q[i]=k;if(i-++I||i%12<1)printf("\033[%d;%dH",(I=i)/12,i%12*2+28);printf(
> "\033[%dm
> "+(K-k?0:5),k);K=k;}Q[263]=c=getchar();}G(b){for(i=4;i--;)if(q[i?b+
> n[i]:b])return 0;return
> 1;}g(b){for(i=4;i--;q[i?x+n[i]:x]=b);}main(C,V,a)char*
> *V,*a;{h[3]=1000000/(l=C>1?atoi(V[1]):2);for(a=C>2?V[2]:"jkl
> pq";i;i--)*n++=i<
> 25||i%12<2?7:0;srand(getpid());system("stty cbreak -echo stop
> u");sigvec(14,v,
> 0);t();puts("\033[H\033[J");for(n=f+rand()%7*4;;g(7),u(),g(0)){if(c<0){if(G(x+ 
> 
> 12))x+=12;else{g(7);++w;for(j=0;j<252;j=12*(j/12+1))for(;q[++j];)if(j%12==10){ 
> 
> for(;j%12;q[j--]=0);u();for(;--j;q[j+12]=q[j]);u();}n=f+rand()%7*4;G(x=17)||(c 
> 
> =a[5]);}}if(c==*a)G(--x)||++x;if(c==a[1])n=f+4**(m=n),G(x)||(n=m);if(c==a[2])G 
> 
> (++x)||--x;if(c==a[3])for(;G(x+12);++w)x+=12;if(c==a[4]||c==a[5]){s=sigblock( 
> 
> 8192);printf("\033[H\033[J\033[0m%d\n",w);if(c==a[5])break;for(j=264;j--;Q[j]= 
> 
> 0);while(getchar()-a[4]);puts("\033[H\033[J\033[7m");sigsetmask(s);}}d=popen( 
> 
> "stty -cbreak echo stop \023;sort -mnr -o HI - HI;cat HI","w");fprintf(d,
> "%4d from level %1d by %s\n",w,l,getlogin());pclose(d);}
> 
> Ergebnis: spielbar! (Tasten: j,k,l und Leerschlag - siehe
> tetris_snap2.jpg)
> 
> have_fun.c ist nicht gross, macht nicht viel, ist vermutlich nicht
> ganz einfach zu verstehen.
> $ more have_fun.c
> main() { printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);}
> $ ./have_fun.out
> unix
> 
> Erklärung??
> 
> | Gruss, Michel Odillon
> 
> PS: da das erste JPG zu gross war (=> E-mail zu gross), habe ich die
> Komprimierung| erhöht.
> 

------------------------------------------------------------------------


------------------------------------------------------------------------

_______________________________________________
Linux-support mailing list
Linux-support at lugbe.ch
http://www.lugbe.ch/vmailman/listinfo/linux-support



More information about the Linux-support mailing list