[Fwd: Re: [linux-support]Für C-Programmierer :o)]
michel
gibsound at bluewin.ch
Fri Oct 8 01:14:02 CEST 2004
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
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?
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.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFBZb+nw+hOcsVSzAMRAjKUAJ9Y/P2F9iGQS8Yexe4qOYI+Wz42ngCgkuMK
5Ini565N++CnUPEFnOANyxI=
=CjWc
-----END PGP SIGNATURE-----
-------------- next part --------------
A non-text attachment was scrubbed...
Name: tetris_snap2.jpg
Type: image/jpeg
Size: 15954 bytes
Desc: not available
Url : http://www.lugbe.ch/vpipermail/linux-support/attachments/20041008/b57b58d2/tetris_snap2.jpe
More information about the Linux-support
mailing list