a[m][n]になっています.スコアを返す関数にしようとしたのは自然だと思いますが,tracebackでは第1引数のaは2次元配列が来ることを仮定しているのでうまく動きません.
aを返すように書けば動くはずです.
irb(main):003:0> s="ATCG" => "ATCG" irb(main):004:0> s[1] => 84のように,s[1]では,sの1文字目(0から始まることに注意)の"T"という文字の文字コードである84を返すわ けです.
一方,s[1..1]ではsの1文字目から1文字目までの部分文字列が得られるので, irb(main):005:0> s[1..1] => "T" となります.ただ,この仕様はあんまりなので,Rubyの次のバージョンである 1.9では,変更されています. ktanaka@dell:~$ irb1.9 irb(main):001:0> a="ATCG" => "ATCG" irb(main):002:0> a[1] => "T" irb(main):003:0> a[1..1] => "T" こちらの方が自然ですね.
ATA AACとなっている部分は、
ATA- A-ACもあり得ますか?上から求めた場合はこうなると思うのですが。
ruby vote.rb 選択肢番号のように使います.
ruby check.rb ex01.rbと実行すると,関数を与えた時の入力と出力があっていることが確認できます.