Missatge: és la opció D, com es pot comprovar fàcilment fent una simulació: cat >>  Ricard .c #include <stdio.h> #include <stdlib.h> #include <math.h> #define FI(n) for(int i = 0; i < n; i++) int main(int c, char *v[]) { int n = 1000, cx = 0; if (c > 1 && 1 == sscanf(v[1], "%d", &c) && c > 0) n = c; float punts[n][3], *p = punts[0], pm = 0; FI(3) punts[0][i] = 1; FI(3) pm += punts[0][i]; FI(3) p[i] /= pm; while (cx++ < n) { FI(3) punts[cx][i] = p[i]; FI(3) p[i] /= 2; p[rand() % 3] += 0.5; } printf("plot "-" w dots\n"); FI(n) { p = punts[i]; float x = p[0]*0 + p[1]*1 + p[2]*0.5; float y = p[0]*0 + p[1]*0 + p[2]*sqrt(3)/2.0; printf("%g %g\n", x, y); } return 0; } ^D c99  Ricard .c ./a.out 10000 | gnuplot -persist

Resposta: És curiós quan un s'acostuma un llenguatge, el que costa anar a parar a un de totalment diferent. Jo, que en general necessito programes molt curts i que només s'hauran de fer funcionar una vegada, faig servir un lisp en notació polonesa inversa, que quasi té 20 anys, que en aquest cas té l'avantatge de tractar directament variables complexes (de la mateixa manera que o fa amb matrius, o expressions algebraiques) i em deixa els programes força curts. (=> és un caràcter especial de fletxa, no un igual i un major)I tan il·legibles pel profà, com per mi el CCLD3 SQRT 4 / q => RND x => RND y => 1 y - x * y 2 / + y q * 2 *COMPLEXREPEAT2 / RND 3 * INTSELECT1 CASE (.5, 0) +2 CASE (.25, q) +ENDSELECTDUP 250 * CPLOT DROPUNTILKEYAl límit, els punts inicials fora de la figura, són negligibles front dels infinits punts que anirien caient sobre el fractral.