Updated on 2023-12-13 (水) 13:14:07 (136d)
講座で参考とするページ †
プログラミング環境 JupyterLab Desktop †
プログラム例 †import random from PIL import Image, ImageDraw # 描画機能 import matplotlib.pyplot as plt # 文字以外の表示機能 size = 11 # サイズ(縦横のマスの数) image = Image.new( "RGB",(size*10,size*10),"gray" ) draw = ImageDraw.Draw(image) maze = [[0]*size for _ in range(size)] # リストのリスト for n in range (size): maze[n][0] = 1 # 上の枠 maze[n][size-1] = 1 # 下の枠 maze[0][n] = 1 # 左の枠 maze[size-1][n] = 1 # 右の枠 for x in range(1,size-1): for y in range(1,size-1): if( x%2==0 and y%2==0 ): # 柱の場所か? maze[x][y] = 1 # 柱を置く else: if( random.randint(0,100)<30): # 乱数 maze[x][y] = 1 # 追加の壁を置く for x in range(size): for y in range(size): if( maze[x][y] == 1 ): draw.rectangle([x*10,y*10,x*10+8, y*10+8], fill="lightgray") plt.imshow( image ) plt.show() RunLenth †from PIL import Image, ImageDraw import matplotlib.pyplot as plt grid = 20 image = Image.new( "RGB", (8*grid,8*grid), "lightgray" ) draw = ImageDraw.Draw(image) data = [[1,6,1], # 自分の用紙のデータを使う [0,8], [0,2,4,2], [0,3,2,3], [0,3,2,3], [0,2,4,2], [0,8], [1,6,1] ] for y in range(8): # 上から8行 color = 0 # 白=0からスタート x = 0 # 左端からスタート for run in data[y]: for n in range(run): # 連続する回数 if( color == 1 ): # 黒? draw.rectangle([x*grid,y*grid, # ■を描く (x+1)*grid-2,(y+1)*grid-2], fill="black") x = x+1 # 1つ右へ # color = 1-color # 白/黒を交換 if( color==0 ): color = 1 else: color = 0 plt.imshow( image ) plt.show() バブルソート †from PIL import Image, ImageDraw import matplotlib.pyplot as plt import random num = 20 image = Image.new( "RGB", (200,100), "gray" ) draw = ImageDraw.Draw(image) data = [random.randint(0,101) for _ in range(num)] for done in range(num): # 最初から最後まで draw.rectangle([0,0,200,100],fill="gray") # 画像クリア for n in range(num-done-1): # 未確定の範囲でループ if( data[n]>data[n+1]): # 大きいものは後ろへ data[n],data[n+1] = data[n+1],data[n] for x in range(num): # 最初から最後まで if( x+done>=num ): # 確定部分は青 draw.rectangle([x*10,0,x*10+5,data[x]], fill=(0,0,255)) else: # まだのところはピンク draw.rectangle([x*10,0,x*10+5,data[x]], fill=(255,128,128)) out = image.transpose(Image.FLIP_TOP_BOTTOM) # 上下を逆に plt.imshow( out ) plt.show() key = input() # キー入力を待つ |