第3章の練習,投票


復習

a=[2,7,1,8]
a[1]=a[3]
a[3]=a[1]
a[1]+a[3]
  1. 2
  2. 3
  3. 15
  4. 16
  5. [2, 7, 1, 8]

次の結果は何?

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. 1
  2. 4
  3. 7
  4. 11
  5. 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]
  1. 5
  2. "ab"
  3. "adabr"
  4. "adabbra"
  5. "cadabraabra"

練習

大きさn で中身が全て 0 であるような1次元配列を作る関数 make1d(n) を定義せよ。

練習


2重の繰り返し

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)) を実行して表示される画像を確めよ。

配列の引数・返り値

def inc1(b)
 n = b.length()
 for i in 0..n-1
   b[i] = b[i]+1
 end
 b
end
def plus1(b)
  n=b.length()
  c=Array.new(n)
  for i in 0..n-1
    c[i]=b[i]+1
  end
  c
end

次は何を返す?

a=[1,2,3]
b=a
a[2]=3
a[2]=30
b[1]=10
a
  1. [1,2,3]
  2. [1,2,30]
  3. [1,10,3]
  4. [1,10,30]
  5. [1,3,3]

次は何を返す?

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
  1. [[0,0],[0,0]]
  2. [[0,0],[1,1]]
  3. [[0,1],[0,1]]
  4. [[1,1],[1,1]]
  5. [0,0]
  6. [0,1]
  7. [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
  1. [[0,0],[0,0]]
  2. [[0,0],[1,1]]
  3. [[0,1],[0,1]]
  4. [[1,1],[1,1]]
  5. [0,0]
  6. [0,1]
  7. [1,1]