Pull to refresh

Comments 8

Для квадрата - Ковер Серпинского.

По поводу снежинок, погуглите "Снежинка Коха". Также будет интересно, наверное, для вас реализовать L-системы, но вообще было это все и на хабре и тысячу раз везде.

Это, действительно, весьма тривиальное упражнение, но в то же время - чрезвычайно эффективное для первых шагов в том или ином языке. Когда я изучал G-code (язык управления станками с ЧПУ), мне понадобился всего день, чтобы разобраться с макросами, переменными и т.п., когда я использовал генерацию фрактальных траекторий как учебный пример.

Стандартные алгоритмы для подготовки к олимпиалному программированию, изучаем рекурсию. Иногда удивляет, как некоторые авторы банальные задачи как какое-то открытие публикуют.

С комплексными числами красивее выходит:

import numpy as np
import matplotlib.pyplot as plt

def render(N=3, d=2, n=10000, R=1):
	p     = np.zeros(n, dtype=complex)
	p[:N] = R*np.exp(1j*2*np.pi*np.arange(N)/N)

	for _ in range(N,n):
		p1 = np.random.choice(p[:N])
		p2 = np.random.choice(p[:_])
		p[_] = (p1+p2)/d

	plt.plot(p.real, p.imag, '.')

if __name__ == "__main__":
	for _ in ((4, 1.7), (3, 2))	:
		plt.figure()
		render(*_)
		plt.gca().set_aspect('equal')
		plt.title(f'N={_[0]}, d={_[1]}')
	plt.show()

И в правду, спасибо!

Sign up to leave a comment.

Articles

Change theme settings