/* Serpinsky triangle
***********************/
#include < stdio.h >
#include < string.h >
#define N 70
#define M 140
#define SYMB '*'
#define HEIGHT 6
void clear(char *buf)
{
memset(buf,' ',M*N);
}
void print(char (*buf)[M])
{
int i,j;
for(i=0;i < N;i++) {
for(j=0;j < M;j++)
putchar(buf[i][j]);
putchar('\n');
}
}
int pow2(int m)
{
int i,n=1;
for(i=0;i < m;i++)
n*=2;
return n;
}
void serpin(char (*buf)[M],int x,int y,int s)
{
int step=pow2(s-1);
if(s==1)
buf[y][x]=buf[y+step][x-step]=buf[y+step][x+step]=SYMB;
else
{
serpin(buf,x,y,s-1);
serpin(buf,x-step,y+step,s-1);
serpin(buf,x+step,y+step,s-1);
}
}
int main()
{
char buf[N][M];
clear((char*)buf);
serpin(buf,M/2,1,HEIGHT);
print(buf);
return 0;
}
Приведём снимок экрана терминала, в котором был построен фрактал:
Литература
А. А. Кириллов. Повесть о двух фракталах. (c2) МЦНМО, 2010, 180 с.

Комментариев нет:
Отправить комментарий