犬と人間の年齢換算コード

 Rubyでプログラミング勉強中(参照)のちょっと息抜きに書いてみた。もうちょっとスッキリ書けないかなと思いつつ、現時点ではこれが精一杯。

today = Time.new
thisYear  = today.year
thisMonth = today.month
month = [1, 3, 5, 6, 7, 9, 10, 12, 13, 14, 16]
age_1 = 17
age_2 = 24
dogYear_1 = 7
dogYear   = 4
puts 'あなたのワンちゃんは西暦何年生まれですか?'
birthYear = gets.chomp.to_i
while birthYear > thisYear
puts '今年以前の西暦年を入力してください。'
birthYear = gets.chomp.to_i
end
puts 'あなたのワンちゃんは何月生まれですか?'
birthMonth = gets.chomp.to_i
if (thisYear == birthYear and thisMonth == birthMonth)
puts 'あなたのワンちゃんは生まれたばかりですね。おめでとう!'
exit
end
age_y = thisYear  - birthYear
age_m = thisMonth - birthMonth
if age_m < 0
age_m = thisMonth + (12 - birthMonth)
age_y = age_y - 1
end
if age_y == 0
puts 'あなたのワンちゃんは、月齢' + age_m.to_s + 'ヶ月です。'
age = month[age_m - 1]
elsif (age_y == 1 and age_m == 0)
puts 'あなたのワンちゃんは、' + age_y.to_s + '歳です。'
age = age_1
elsif (age_y == 1 and age_m >  0)
puts 'あなたのワンちゃんは、' + age_y.to_s + '歳と' + age_m.to_s + 'ヶ月です。'
age = age_1 + (dogYear_1 * age_m / 12)
elsif (age_y >= 2 and age_m == 0)
puts 'あなたのワンちゃんは、' + age_y.to_s + '歳です。'
age = age_2 + ((age_y - 2) * dogYear)
elsif (age_y  > 1 and age_m >  0)
puts 'あなたのワンちゃんは、' + age_y.to_s + '歳と' + age_m.to_s + 'ヶ月です。'
age = (age_2 + ((age_y - 2) * dogYear)) + (dogYear * age_m / 12)
end
puts '人間でいうと、概ね' + age.to_s + '歳です。'

メモ

  • 換算表参照 ⇒ 犬&猫 年齢換算表 e-Petfood
    • 月齢1ヶ月→1歳までは規則性がないみたい。
    • 1歳→2歳は7歳、2歳以降は4歳/年。
  • 誕生年(西暦)と誕生月を入力してもらい、取得する現在の年月と比較して、年齢(月齢)を計算・表示。
  • 月齢1ヶ月→1歳までの換算は規則性がないので、換算年齢を配列(month[])に入れこむ。
  • きっかりn歳にならない場合(例: 1歳9ヶ月とか)もあるので、大体で換算年齢を計算。

See also

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.