- ITC-LMSの掲示板11/4の課題,質問への書き込みは 11/11 9:00 現在で 66 名.
- 条件判断で等しいかどうかの判定の際に「==」ではなく「=」を書いて動かなかったという人が多かった.
- 配列「a」の最大の添字が「a.length()」 ではなく「a.length()-1」だということに気づかず「<」の代わりに「<=」を使ったという人も目立った.
- mergeを定義した人が多かった.典型的な解法はaとbのどちらからcにコピーするかを「if ia < a.length()」で判断して分岐する以下のようなプログラム.
def merge(a,b)
c = make1d(a.length()+b.length())
ia=0
ib=0
ic=0
while ia < a.length() && ib < b.length()
if a[ia] < b[ib]
c[ic] = a[ia]
ia = ia + 1
ic = ic + 1
else
c[ic] = b[ib]
ib = ib + 1
ic = ic + 1
end
end
if ia < a.length()
while ia < a.length()
c[ic] = a[ia]
ia = ia + 1
ic = ic + 1
end
else
while ib < b.length()
c[ic] = b[ib]
ib = ib + 1
ic = ic + 1
end
end
c
end
- もっとも,ここで分岐せずに以下のように(穴埋め部分のみ)書いても問題はない.
while ia < a.length()
c[ic] = a[ia]
ia = ia + 1
ic = ic + 1
end
while ib < b.length()
c[ic] = b[ib]
ib = ib + 1
ic = ic + 1
end
- whileではなくforで書いた人もいた.
for j in ia..(a.length()-1)
c[ib + j] = a[j]
end
for j in ib..(b.length()-1)
c[ia + j] = b[j]
end