画像処理を行うので、irbを終了し、isrbを起動させましょう。
- 次のようなデータを作成し、画像として表示させよ。w=[[0,1,1,1,1,1],[0,1,0,0,0,1],[0,1,0,1,0,1],[0,1,1,1,0,1],[0,0,0,0,0,1]]
上の通り入力してからshow(w)と入力すると、次のような画像が表示されます。
show(a)は、「数列aを画像表示せよ」という命令です。
- カラー画像表現を使って簡単な国旗を描いてみよ。ドイツ国旗g=[[[0,0,0],[0,0,0],[0,0,0],[0,0,0]],[[1,0,0],[1,0,0],[1,0,0],[1,0,0]],[[1,1,0],[1,1,0],[1,1,0],[1,1,0]]]show(g)
f=[[[0,0.2,0.6],[1,1,1],[1,0,0]],
[[0,0.2,0.6],[1,1,1],[1,0,0]],
[[0,0.2,0.6],[1,1,1],[1,0,0]]]
show(f)
- 配列中の2つの要素を入れ替える関数swap(a,i,j)を作れ。def swap(a,i,j)t=a[i]a[i]=a[j]a[j]=taend
- 配列aのi番目とi+1番目の数値の大きさを比べ、前者が後者より大きいときに両者を入れ替える関数swap_ascending(a,i)を作れ。def swap_ascending(a,i)if a[i]>a[i+1]t=a[i]a[i]=a[i+1]a[i+1]=tendaend
def swap_ascending(a,i)
if a[i]>a[i+1]
swap(a,i,i+1)
end
a
end
- aのx番目の値と、その前後の値の平均値を求めるarray_average(a,x)を作れ。ただし前後の値とは、aの(x-1)番目と(x+1)番目の値のうち、aの範囲内のものだとする。例えばaが[1,2,3]のときarray_average(a,0)は1.5、array_average(a,1)は2.0、array_average(a,2)は2.5になる。def array_average(a,x)if x==0(a[0]+a[1])/2.0elseif x==a.length()-1(a[x-1]+a[x])/2.0else(a[x-1]+a[x]+a[x+1])/3.0endendend
- 画像データの座標(x,y)の点と、その周囲の点の明度の平均値を計算する関数image_average(image,x,y)を作れ。周囲の点とは指定された点の上下左右8点のうち、画像の範囲内の点だとする。例えば座標(0,0)の周囲の点は、(0,1),(1,1),(1,0)の3点になる。def image_average(a,x,y)if x==0if y==0(a[0][0]+a[0][1]+a[1][1]+a[1][0])/4.0elseif y==a.length()-1(a[y][0]+a[y-1][0]+a[y-1][1]+a[y][1])/4.0else(a[y][0]+a[y-1][0]+a[y-1][1]+a[y][1]+a[y+1][1]+a[y+1][0])/6.0endendelseif x==a[0].length()-1if y==0(a[0][x]+a[0][x-1]+a[1][x-1]+a[1][x])/4.0elseif y==a.length()-1(a[y][x]+a[y-1][x]+a[y-1][x-1]+a[y][x-1])/4.0else(a[y][x]+a[y-1][x]+a[y-1][x-1]+a[y][x-1]+a[y+1][x-1]+a[y+1][x])/6.0endendelse(a[y][x]+a[y-1][x-1]+a[y][x-1]+a[y+1][x-1]+a[y+1][x]+a[y+1][x+1]+a[y][x+1]+a[y-1][x+1]+a[y-1][x])/9.0endendend
0 件のコメント:
コメントを投稿