def max(x,y) if x>y x else y end end
def sign (x) if x < 0 -1 else if 0 < x 1 # not(x <0) and 0
どれが正しいか?
xの値が7、yの値が5、zの値が3であるとして
- x < y
- x <= y
- y != z
- z > x
- z == x
どれが正しいか?
xの値が7、yの値が5、zの値が3であるとして
- x < y
- x <= y
- x < y && y != z
- x <= y || y == z
- !(y == z)
次の結果は何?
def is_even(x) x%2 == 0 enddef tnpo(n) if is_even(n) n/2 else 3*n + 1 end end irb(main):001:0> tnpo(tnpo(tnpo(7)))
- 1
- 4
- 7
- 11
- 34
次の結果は何?
irb(main):001:0> s="abra" => "abra" irb(main):002:0> t = "cadabra" => "cadabra" irb(main):003:0> t[1..3]+s[1..2]
- 5
- "ab"
- "adabr"
- "adabbra"
- "cadabraabra"
練習
大きさn で中身が全て 0 であるような1次元配列を作る関数 make1d(n) を定義せよ。
練習
- h 行w 列の配列を作る make2d(h,w) を定義せよ。ただし、作られる配列の中身は全て 0 にせよ。
- 式3.2 の計算をする関数 b(r,x,y) を定義せよ (x, y) だけでなく r も引数となっていることに注意せよ)。
2重の繰り返し
include Math def make1d(n) a=Array.new(n) for i in 0..(n-1) a[i]=0 end a end def make2d(h,w) b=Array.new(h) for i in 0..(h-1) b[i]=make1d(w) end b end def d(x,y,r) return sqrt((x-r)**2+(y-r)**2) end def b(r,x,y) if d(x,y,r)<=r (r-d(x,y,r))/r else 1 end enddef sphere(r) image = make2d(2*r, 2*r) for y in 0..(2*r -1) for x in 0..(2*r -1) image[y][x] = b(r,x,y) end end image end
練習
show(sphere(20)) を実行して表示される画像を確めよ。
進捗状況の確認
- show(sphere(20))がうまく行った時点で投票してください.
- sphereを定義したが,show(sphere(20))がうまく行かない
- bまでできた
- make2dまでできた
- make1dまでできた
- まだ
次は何を返す?
a = Array.new(2) b = Array.new(2) for i in 0..1 b[i] = a for j in 0..1 b[i][j] = i end end b
- [[0,0],[0,0]]
- [[0,0],[1,1]]
- [[0,1],[0,1]]
- [[1,1],[1,1]]
- [0,0]
- [0,1]
- [1,1]
次は何を返す?
b = Array.new(2) for i in 0..1 b[i] = Array.new(2) for j in 0..1 b[i][j] = i end end b
- [[0,0],[0,0]]
- [[0,0],[1,1]]
- [[0,1],[0,1]]
- [[1,1],[1,1]]
- [0,0]
- [0,1]
- [1,1]
練習
- 2 次方程式ax2 + bx + c = 0 の解の個数を求めるsolutions(a,b,c). 判別式の値だけでなく、1 次方程式になっている場合にも対応せよ。
- 3 つの異なる値x, y, z が与えられたときの中央値を求めるmedian(x,y,z). 中央値とは大きさ順に並べたときに真ん中に来る値のことである。
進捗状況の確認
- solutionsができた時点で投票してください
進捗状況の確認
- 両方できた。
- solutionsだけ。
- medianだけ。
- まだ何もできていない。