View Full Version : avete mai sentito parlare del trianglo di Sierpinski????
Piojolopez2406
05-02-2007, 20:16
sto cercando in tutti i modi di capire la formula ke lregola la ricorsione in questo triangolo ma non sn capace di trovarla....mi sapreste aiutare?
poi devo scriverlo in "c" :muro: :muro: :muro: :muro: ............ :mc:
Il triangolo no! Non lo avevo considerato... :D
Mai sentito :stordita:
Piojolopez2406
05-02-2007, 21:00
Il triangolo no! Non lo avevo considerato... :D
Mai sentito :stordita:
sei un cabaretista....complimentoni....strano ke ancora nn ti abbiano scritturato ...
franksisca
05-02-2007, 21:54
conosco il numero(c'è anche su wiki) ma non conosco il triangolo??? :confused: :confused: :confused:
franksisca
05-02-2007, 21:56
cercando trovando.......
http://www.webfract.it/FRATTALI/triangolo.htm
interessante, mi ha incuriosito.
Piojolopez2406
05-02-2007, 22:04
vedi io lo stovedendo non così ma come quadato
ossia una cosa del genere
x
xx
x x
xxxx
x x
xx xx
x x x x
xxxxxxx
x x
xx xx
x x x x
xxxx xxxx
x x x x
che continua fino a che al'ultima riga nn si trovano 32 "x", il discorso kè ke nn riesco proprioa trovare quale algoritmo può generare questo frattale...l'ho spulciata tutta la rete
franksisca
05-02-2007, 22:35
vedi io lo stovedendo non così ma come quadato
ossia una cosa del genere
x
xx
x x
xxxx
x x
xx xx
x x x x
xxxxxxx
x x
xx xx
x x x x
xxxx xxxx
x x x x
che continua fino a che al'ultima riga nn si trovano 32 "x", il discorso kè ke nn riesco proprioa trovare quale algoritmo può generare questo frattale...l'ho spulciata tutta la rete
scusa, ma non ho capito cosa intendi per frattale, me lo spieghi, per favore???
Piojolopez2406
05-02-2007, 22:37
scusa, ma non ho capito cosa intendi per frattale, me lo spieghi, per favore???
VUOI CONTATTARMI SU MSN TI DO IL MIO INDIRIZZO IN PVT....NE PARLIAMO Lì SE PUOI E SE TI VA
franksisca
05-02-2007, 22:39
manda;)
vedi io lo stovedendo non così ma come quadato
ossia una cosa del genere
x
xx
x x
xxxx
x x
xx xx
x x x x
xxxxxxx
x x
xx xx
x x x x
xxxx xxxx
x x x x
che continua fino a che al'ultima riga nn si trovano 32 "x", il discorso kè ke nn riesco proprioa trovare quale algoritmo può generare questo frattale...l'ho spulciata tutta la rete
Forse non l'hai spulciata bene :P. Quello che cerchi tu e' lo stesso algoritmo visto sopra, solo con un triangolo rettangolo con l'angolo retto in basso a sinistra.
Comunque l'algoritmo e' semplice: prendi il tuo "riquadro", dividilo in quattro parti, quella in alto a destra rimane vuota, le altre sono piu' o meno piene. Ovviamente quella vuota la ignori, quelle "piu' o meno piene", le ridividi con lo stesso algoritmo, solo che questa volta hai quadrati di meta' lato
Quando ti stufi (ovvero arrivi a lato di lunghezza 1 ), consideri il "piu' o meno pieno" come pieno :D.
Ad esempio se decidi che il tuo lato iniziale e' di sedici, concettualmente i passaggi sono i seguenti:
********
********
********
********
********
********
********
********
****************
****************
****************
****************
****************
****************
****************
****************
****
****
****
****
********
********
********
********
**** ****
**** ****
**** ****
**** ****
****************
****************
****************
****************
**
**
****
****
** **
** **
********
********
** **
** **
**** ****
**** ****
** ** ** **
** ** ** **
****************
****************
*
**
***
****
* *
** **
* * * *
********
* *
** **
* * * *
**** ****
* * * *
** ** ** **
* * * * * * * *
****************
Ti scrivo il codice in python che forse di da l'idea di come funziona.
from sys import stdout
def step(n,table,xbase,ybase):
if n == 1:
table[(xbase,ybase)] = True
else:
# alto sinistra
step(n/2,table,xbase,ybase)
# basso sinistra
step(n/2,table,xbase,ybase+n/2)
# basso destra
step(n/2,table,xbase+n/2,ybase+n/2)
def sierpinsky(n):
table = {}
step(n,table,0,0)
for y in range(n):
for x in range(n):
if (x,y) in table:
stdout.write('x')
else:
stdout.write(' ')
stdout.write('\n')
Piojolopez2406
05-02-2007, 23:30
questo è quello ke ho buttato giù io ma non mi funziona....
sapresti darmi qualke consiglio?
/*ALGORITMO PER LA COSTRUZIONE DI UN FRATTALE */
/*VERSIONE RICORSIVA*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int i,j;
void FrattaleRic(char mat[][32],int m,int p,int k);//PROTOTIPO DI FUNZIONE
void main()
{
int n,p,k,m,i,j;
char mat[32][32];
n=32;
m=5;
for (i=0;i<n;i++)
for(j=0;j<n;j++)
mat[i][j]='x';
FrattaleRic(mat,m,0,0);//CHIAMATA DI FUNZIONE
system("PAUSE");
}
void FrattaleRic(char mat[][32],int m,int p,int k)
{
int n=32;
if (m>0)
{
for (i=n*k/pow(2,m-1);i<(n/pow(2,m)+n*k/pow(2,m-1));i++)
for(j=(p*n/pow(2,m-1)+n/pow(2,m));j<(n/pow(2,m-1)+n*p/pow(2,m-1));j++)
mat[i][j]=' ';
printf("\n\n");
for (i=0;i<32;i++)
{
printf("\n");
for(j=0;j<32;j++)
printf("%c",mat[i][j]);
}
FrattaleRic(mat,m-1,0,0);
FrattaleRic(mat,m-1,0,1);
FrattaleRic(mat,m-1,1,1);
}
else
{
for (i=n*k/pow(2,m-1);i<(n/pow(2,m)+n*k/pow(2,m-1));i++)
for(j=(p*n/pow(2,m-1)+n/pow(2,m-1));j<(n/pow(2,m)+n*p/pow(2,m));j++)
mat[i][j]=' ';
printf("\n\n");
for (i=0;i<32;i++)
{
printf("\n");
for(j=0;j<32;j++)
printf("%c",mat[i][j]);
}
}
}
Piojolopez2406
05-02-2007, 23:30
il mio algoritmo deve essere necessariamente ricorsivo, la versione iterativa già l'ho realizzata...
Piojolopez2406
06-02-2007, 03:56
in realtà la mia versione iterativa del programma è questa;
{
int m,i,j,n,ii,jj;
double k,p,x;
char mat[32][32];
for (ii=0;ii<32;ii++)
{
for(jj=0;jj<32;jj++)
{
mat[ii][jj]='x';
printf("%c",mat[ii][jj]);
}
printf("\n");
}
printf("\n");
n=32;
x=2;
for (m=0;m<5;m++)
{
for(k=0;k<pow(x,m);k++)
for(i=k*n;i<k*n+n/2;i++)
for(p=0;p<pow(x,m);p++)
for(j=p*n+n/2;j<(p+1)*n;j++)
mat[i][j]=' ';
n=n/2;
for (ii=0;ii<32;ii++)
{
for(jj=0;jj<32;jj++)
{
printf("%c",mat[ii][jj]);
}
printf("\n");
}printf("\n\n");
}
system("PAUSE");
}
ora la mia difficoltà sta nel rendere l'algoritmo da iterativo a ricorsivo...è qui ke non mi trovo
Piojolopez2406
06-02-2007, 13:07
up ....please
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.