PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C] versteht den Code :>



electron1x
05.11.2011, 15:36
In dieser Aufgabe, müsst ihr nichts coden, sondern nur verstehen.

Hier ist der Code:


/* gameoflife.c - by C2dafuqnkay */
# define B f[a]
char f[2][26][82],i,j,a=0,c[]="_o",n;main(){B[3][3]=B[3][2]=B[3][1]=B[2][3]=B[1][2]=1;for
(;;){system("clear");for(i=1;i< 25;i++){for(j=1; j<81;j++){printf("%c",c[f[!a][i][j]]);n=B
[i-1][j-1]+B[i-1][j]+B[i-1][j+1]+B[i][j-1]+B[i][j+1]+B[i+1][j-1]+B[i+1][j]+B[i+1][j+1];f[!
a][i][j]=(!B[i][j]&&n==3) ||(B[i][j]&&n>1&&n<4);}puts("");}sleep(1);a=!a;}}


Eure Aufgabe ist es zu beschreiben, wie der Code funktioniert.

HF! :)

K3nny
05.11.2011, 15:37
Muss ich passen xD das übertrifft mein C nicht Skill bei weitem ^^

ocz
05.11.2011, 16:12
lol, fuck this.
http://s3-ak.buzzfed.com/static/imagebuzz/web05/2011/7/29/23/fuck-that-squid-10545-1311997460-16.jpg

Solaro
05.11.2011, 16:17
Kryptologie die sich einen Array zur Hilfe nimmt ?

electron1x
05.11.2011, 17:09
Hier die eingerückte Version... einfach um euch 1 Minute Arbeit zu ersparen ^^




# define B f[a]
char f[2][26][82],i,j,a=0,c[]="_o",n;

main()
{
B[3][3]=B[3][2]=B[3][1]=B[2][3]=B[1][2]=1;
for(;;){
system("clear");
for(i=1;i< 25;i++){
for(j=1; j<81;j++){
printf("%c",c[f[!a][i][j]]);
n=B[i-1][j-1]+B[i-1][j]+B[i-1][j+1]+B[i][j-1]+B[i][j+1]+B[i+1][j-1]+B[i+1][j]+B[i+1][j+1];
f[!a][i][j]=(!B[i][j]&&n==3) ||(B[i][j]&&n>1&&n<4);
}
puts("");
}
sleep(1);
a=!a;
}
}



@ocz: keine eunrückung zeilenumbrüche fehlen nur, damit man das programm auch als sig verwenden kann ;)
... und um newbs abzuschrecken hrhr

@Solaro: nein, hat nichts damit zu tun.

Five-Three-Nine
05.11.2011, 18:40
Dich gibt's also auch noch, electron1x :surprised
Den Glider selbst geschrieben?


/*
Die Module spielen verrückt!
Schalt mich ein, schalt mich aus.
Die Gefühle müssen raus.
*/

// gameoflife.c - by C2dafuqnkay
// A game of life glider in obscured C


char f[2][26][82], // Zeichenfeld (Zweidimensional)
i, // Kontrollvariable I (Höhe y)
j, // Kontrollvariable II (Breite x)
a=0, // Dimension
c[]="_o", // Symbole (0="_";1="o")
n; // Bewegungslogikspeicher

main()
{
f[a][3][3]=f[a][3][2]=f[a][3][1]=f[a][2][3]=f[a][1][2]=1; // Startkoordinaten

/*
xox
xxo
ooo
*/

for(;;){ // Endlosschleife
system("clear"); // Leere Zeichenfeld
for(i=1;i< 25;i++){ // Zeilenschleife (y)
for(j=1; j<81;j++){ // Pixelschleife (x)
printf("%c",c[f[!a][i][j]]);
// Schreibe Symbol; Symbol = Zeichenfeld[!Dimension[y][x]];
// Im ersten Durchlauf wird nur das Spielfeld gezeichnet

// Bewegunslogik
n=f[a][i-1][j-1]+f[a][i-1][j]+f[a][i-1][j+1]+f[a][i][j-1]+f[a][i][j+1]+f[a][i+1][j-1]+f[a][i+1][j]+f[a][i+1][j+1];
f[!a][i][j]=(!f[a][i][j]&&n==3) ||(f[a][i][j]&&n>1&&n<4);
}
puts(""); // Newline
}
sleep(1); // Warte
a=!a; // Dimensionswechsel
}
}

Ich hoffe das reicht aus; die Logik ausführlich zu beschreiben wäre ja schon wieder eine Aufgabe für sich. :p

electron1x
05.11.2011, 19:04
sehr cool mr 1337,
Jetzt fehlt nur noch die Bewegungslogik, dann ist das Programm komplett dokumentiert :D

Btw, mich wundert auch, dass du noch lebst 539... Auf die gute alte zeit :D
area42 4 life


kleiner tipp: n steht für nachbarn ;)

EDIT: ja den glider habe ich geschrieben :) was hälst du von dem code?

nemo
14.01.2012, 22:58
~

cby
14.01.2012, 23:03
area42 fth ;)