第1-6章まとめ課題


昨年度の作品

昨年度の作品が2019年度アルゴリズム入門 第1-6章まとめ課題にあります.Googleアカウントへのログインを求められたときは,通常のGoogleアカウント「XXX@gmail.com」ではなく,ECCSクラウドメールのアカウント「XXX@g.ecc.u-tokyo.ac.jp」(XXXは10桁の数字ではない方)を使ってログインしてください.他のgmailアカウントで入って,「アクセス権限をリクエスト」しても本人確認できないため,アクセス権を与えることはありません(メール等での連絡もおこないません).

ヒント(簡単な静止画像)

一から作るのが面倒な人は,以下のプログラムの(1)の部分の穴を埋めて a[y][x]に点(x,y)でのR,G,B値からなる大きさ3の配列を入れるコードを書く ので良い.
def show_color_picture():
  a=ita.array.make3d(50, 50, 3)
  for y in range(0, 50):
    for x in range(0, 50):
      #a[y][x]にRGB値からなる大きさ3の配列(要素は0から1までの実数)を入れる
       (1)
  return a
ita.plot.image_show(show_color_picture())
たとえば,(1)のところに
      a[y][x] = [x / 49, 1 - y / 49, 1]
と入れると, になり,その間を補間した

のような図が得られる.

ヒント(簡単なアニメーション)

先程のプログラムをアニメーションを作成するプログラムに変更することができる.itaライブラリを使ってアニメーションを作成する場合は,静止画像を複数枚用意してそれぞれを配列に入れる.そのため,まずは,さきほどのshow_color_picture() を変更して,t枚目の静止画像を作成する関数にしてみる.
def show_color_picture(t):
    a=ita.array.make3d(50, 50, 3)
    for y in range(0, 50):
        for x in range(0, 50):
           #a[y][x]にRGB値からなる大きさ3の配列(要素は0から1までの実数)を入れる
           a[y][x] = [x / 49, 1 - y / 49, t / 10]
    return a
これを使って,10枚の静止画を作成して1つの配列に入れる関数を作成して,表示させてみる.
def show_animation():
    image = ita.array.make1d(10)
    for t in range(0, 10):
        image[t] = show_color_picture(t)
    return image
ita.plot.animation_show(make_animation())
すると,以下のように時間ごとに色が変わっていくアニメーションになる.


ヒント

乱数を使いたい人は
import random
をした上で,random.randrange(0, n)で0以上n-1以下の整数が返る.
IN [1]: random.randrange(3)
OUT[1]: 1
IN [2]: random.randrange(3)
OUT[2]: 0
小数の乱数は random.random() で0.0以上1.0以下の一様乱数が返る.
IN [1]: random.random()
OUT[1]: 0.3163153252111951
IN [2]: random.random()
OUT[2]: 0.9910121225838986

小数値を整数値に変換するには,「int(式)」とする.
IN [1]: int(2.9)
OUT[1]: 2
IN [2]: int(2)
OUT[2]: 2
IN [3]: int(-2.9)
OUT[3]: -2
四捨五入ではないので,注意が必要.