ABC 122
A
解答例1
puts gets.tr('ATCG', 'TAGC')
tr
:文字の置き換えができる。- なんか特殊な使い方をするみたい。
# 頭から変えてく、足りなければ以下同文的な puts s.tr("1-9", "ABC#") # 1から3の字はA,B,C、4から9は#に
# ^で以外を表す puts s.tr("^1-9", "@") # 1から9の字以外を@に
# 範囲指定もできる puts s.tr("1-9", "A-I") # 1から9の字をAからIに
解答例1
b = gets.chomp list = { 'A' => 'T', 'T' => 'A', 'C' => 'G', 'G' => 'C', } puts list[b]
- ハッシュにすればキー指定でアクセスできる。
B
- 正規表現で
ATGC
を含むものを見つける scan
メソッドで、見つかった文字列を配列ですべて返す- 返ってきた文字列をひとつずつ見て、
size
が一番大きいときの長さを返す - 当てはまるものがひとつもないときは0を返す
解答例
puts gets.chomp.scan(/[ATGC]+/).map(&:size).max || 0
scan
便利だな。
C
- これどーやっておもいつくの、、、
最後の引き算、なんでこうなるのかが感覚的にしかつかめなくてうーん。
文字列のaからb文字目にいくつ特定の文字列が含まれるか→文字列の最終文字でカウントアップし他数列を作り、インデックスb-aする