みんなが作った問題に対する俺の回答

昨日書いたRuby勉強会第三回の続きです。今回はみんな課題ちゃんと作ってきてくれたお!!

コマンドライン引数で渡したファイルを読んで、引数で渡した文字列から始まる行をとってくる

  • id:InoHiroの課題
  • 正規表現に変数入れるときは「#{}」ってやるってことではまってた
def judge_reg(file_name,word)
  filename = file_name
  file = open(filename)
  while text = file.gets do
    if(/^#{word}.*/ =~ text)
      puts text
    end
  end
end

judge_reg(ARGV[0],ARGV[1])

引数に適当な小数渡して、乱数100個発生させ、小数点第一桁だ同じものがいくつあるかカウント

  • onoue50の課題
  • Floatを文字列に変換して、正規表現でぶっこ抜いた
    • miyaga50は問題を置換して解いていた。great!
def get_one_decimal(rand)
  /\d\.(\d)\d*/ =~ rand.to_s
  return $1
end

/\d\.(\d)\d*/ =~ ARGV[0]
my_decimal = $1

count = 0
(1..100).each{ 
  decimal = get_one_decimal(rand())
  if(decimal == my_decimal)
    count += 1
  end
}
puts count

適当なランダムの文字列を生成して、引数に与えたものとマッチするのがいくつあるかを数える

  • tantan50の課題
  • stringをランダムに生成、stringが入った配列と乱数で対処
  • miyaga50の「("a".."z")」という表現が勉強になった
def make_rand_string(array,n)
  string = ""
  rand = rand(n)
  (0..rand).each{
    string += array[rand(array.size)]
  }
  return string
end

array = ["a","b","c","d","e"]

string = []

want = Regexp.new(ARGV[0])

(0..1000).each{ 
  string.push(make_rand_string(array,4))
}

puts string
puts "=================================="

count = 0

puts string.grep(want).size