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
end
def 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
end
def 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だけ。
- まだ何もできていない。