irb(main):001:0> a=[[1,2],[3,4]] => [[1, 2], [3, 4]] irb(main):002:0> b=a => [[1, 2], [3, 4]] irb(main):003:0> a[0][0]=0 => 0 irb(main):004:0> b => [[0, 2], [3, 4]]のように再現できる.
irb(main):001:0> a=[[1,2],[3,4]]
=> [[1, 2], [3, 4]]
irb(main):002:0> b=a.map{|v| v.dup}
=> [[1, 2], [3, 4]]
irb(main):003:0> a[0][0]=0
=> 0
irb(main):004:0> a
=> [[0, 2], [3, 4]]
irb(main):005:0> b
=> [[1, 2], [3, 4]]
のようになります.ただ,この書き方は講義の範囲を超えているので扱いませんでした.
def abs (x)
  if x >=0 
    x
  else
    -x
  end
end
#a[i][k]の絶対値が最大となるi>=kを探す
def maxrow(a,k)
  max_i = k
  for i in (k+1)..(a.length()-1)
    if abs(a[max_i][k]) < abs(a[i][k])
      max_i = i # 穴埋め
    end
  end
  max_i
end
def swap(a,i,j)
  tmp=a[i]
  a[i]=a[j]
  a[j]=tmp
end
def gjp(a) # Gauss-Jordan method WITH pivoting
  row = a.length()
  col = a[0].length()
  for k in 0..(col-2)
    max=maxrow(a,k) # find absolute-maximal coeff. 
    swap(a,k,max)   # swap rows
    akk = a[k][k]
    for i in 0..(col-1)       # normalize row k
      a[k][i]=a[k][i]*1.0/akk
    end
    for i in 0..(row-1)          # eliminate column k
      if i != k          # of all rows but k
    aik = a[i][k]
    for j in k..(col-1)
      a[i][j] = a[i][j] - aik * a[k][j]
    end
      end
    end
  end
  a
end
ruby vote.rb 選択肢番号のように使います.
mkdir is10のようにしてください.そして,ターミナルを開くたびに
cd is10と入力してからirbを動かすと良いでしょう.詳しくは,はいぱーワークブック「13.4 コマンドを使ったファイル操作」を参照してください.
ruby check.rb ex01.rbと実行すると,関数を与えた時の入力と出力があっていることが確認できます.