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

  • これどーやっておもいつくの、、、

gyazo.com

  • 最後の引き算、なんでこうなるのかが感覚的にしかつかめなくてうーん。

  • 文字列のaからb文字目にいくつ特定の文字列が含まれるか→文字列の最終文字でカウントアップし他数列を作り、インデックスb-aする