2018年6月14日木曜日

開発環境

Pythonからはじめる数学入門 (Amit Saha (著)、黒川 利明 (翻訳)、オライリージャパン)の6章(幾何図形とフラクタルを描画する)、5.4(プログラミングチャレンジ)、問題6-1(正方形に円を詰める)を取り組んでみる。

コード(Emacs)

Python 3

#!/usr/bin/env python3
import matplotlib.pyplot as plt


ax = plt.axes(xlim=(0, 6), ylim=(0, 6))
ax.set_aspect('equal')


def draw_square():
    square = plt.Polygon([(1, 1), (5, 1), (5, 5), (1, 5)], closed=True)
    print(square)
    ax.add_patch(square)


def draw_circle(x, y):
    circle = plt.Circle((x, y), radius=0.5, facecolor='green', edgecolor='red')
    print(circle)
    ax.add_patch(circle)


if __name__ == '__main__':
    draw_square()
    x = 1.5
    while x <= 4.5:
        y = 1.5
        while y <= 4.5:
            draw_circle(x, y)
            y += 1
        x += 1
    plt.savefig('sample1.svg')

入出力結果(Terminal, Jupyter(IPython))

$ ./sample1.py
Poly((1, 1) ...)
Circle(xy=(1.5, 1.5), radius=0.5)
Circle(xy=(1.5, 2.5), radius=0.5)
Circle(xy=(1.5, 3.5), radius=0.5)
Circle(xy=(1.5, 4.5), radius=0.5)
Circle(xy=(2.5, 1.5), radius=0.5)
Circle(xy=(2.5, 2.5), radius=0.5)
Circle(xy=(2.5, 3.5), radius=0.5)
Circle(xy=(2.5, 4.5), radius=0.5)
Circle(xy=(3.5, 1.5), radius=0.5)
Circle(xy=(3.5, 2.5), radius=0.5)
Circle(xy=(3.5, 3.5), radius=0.5)
Circle(xy=(3.5, 4.5), radius=0.5)
Circle(xy=(4.5, 1.5), radius=0.5)
Circle(xy=(4.5, 2.5), radius=0.5)
Circle(xy=(4.5, 3.5), radius=0.5)
Circle(xy=(4.5, 4.5), radius=0.5)
$

0 コメント:

コメントを投稿