Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのフラクタルツリー


フラクタルパターンは自然界で私たちの周りにあります。シダの葉から取り出された小さな枝のように、葉自体に似ています。または、小石はしばしば山の形に似ています!したがって、大きなパターンを生成するために小さなパターンを繰り返すというこのアイデアは、フラクタルツリーとして知られています。 Pythonプログラミングでは、利用可能なさまざまなモジュールを使用してフラクタルツリーを生成することもできます。

pygameモジュールの使用

このモジュールは、フラクタルツリーを生成するために必要な機能を提供します。ここでは、最初に画面レイアウトサイズを定義し、次にパターンが繰り返される深さを定義します。ここでは、同じパターンを特定の深さまで何度も繰り返すため、再帰が大きな役割を果たします。

import pygame, math

pygame.init()
screen = pygame.display.set_mode((750, 650))
pygame.display.set_caption("Fractal Tree")
display = pygame.display.get_surface()

def drawTree(a, b, pos, deepness):
if deepness:
c = a + int(math.cos(math.radians(pos)) * deepness * 10.0)
d = b + int(math.sin(math.radians(pos)) * deepness * 10.0)
pygame.draw.line(display, (127,255,0), (a, b), (c, d), 1)
drawTree(c, d, pos - 25, deepness - 1)
drawTree(c, d, pos + 25, deepness- 1)

def process(event):
if event.type == pygame.QUIT:
exit(0)

drawTree(370, 650, -90, 10)
pygame.display.flip()
while True:
process(pygame.event.wait())

出力

上記のコードを実行すると、次の結果が得られます。

Pythonのフラクタルツリー

タートルの使用

タートルモジュールを使用すると、同様のアプローチに従うことができます。ここで、タートルプログラムは、描画の方向を変更するだけで、繰り返しパターンとして木の枝の描画を開始します。関数が繰り返される角度を定義してから、完全なツリーを取得します。

import turtle
def tree(Length,n):
   if Length > 10:
      n.forward(Length)
      n.right(25)
      tree(Length-15,n)
      n.left(50)
      tree(Length-15,n)
      n.right(25)
      n.backward(Length)

def function():
   n = turtle.Turtle()
   data = turtle.Screen()
   n.left(90)
   n.up()
   n.backward(100)
   n.down()
   n.color("green")
   tree(85,n)
   data.exitonclick()

function()

出力

上記のコードを実行すると、次の結果が得られます。

Pythonのフラクタルツリー


  1. 2つの二分木のリーフトラバーサルがPythonで同じかどうかを確認します

    2分木があるとします。これら2本の木の葉の走査が同じかどうかを確認する必要があります。私たちが知っているように、葉の探索は左から右に横断する葉のシーケンスです。 したがって、入力が次のような場合 両方のツリーの左走査シーケンスが同じであるため、出力はTrueになります。つまり、[5、7、8]です。 これを解決するには、次の手順に従います- s1:=新しいリスト、s2:=別の新しいリスト r1をs1に挿入し、r2をs2に挿入します s1とs2が空ではない場合は、 s1が空の場合、またはs2が空の場合、 Falseを返す r1_node:=s1の最後のノードであり、s1

  2. Pythonのissuperset()

    この記事では、Pythonでのissuperset()と、さまざまな分野でのその実装について学習します。 このメソッドは、セットBのすべての要素に引数として渡されるすべての要素セットAが含まれている場合はブール値Trueを返し、Aのすべての要素がBに存在しない場合はfalseを返します。 これは、BがAのスーパーセットである場合、それを意味します returns true; else False 例 いくつかの例を見てみましょう A = {'t','u','t','o','r','i',