うるう年ってなんだっけ(Ruby)
コードガールこれくしょんの演習問題を解いていて、
やけにうるう年を問う問題が出てきて、
そもそもうるう年ってなんだっけと思い始め、
調べていくうちになるほどなと思った体験日記
はじめにプログラムをとにかく書いてみた
とにかくやってみよう精神で、
言葉からプログラムを書いてみようと「うるう年」で検索すると、
「うるう年とは-はてなキーワード」とあるのでクリック
以下そのサイトでの引用なのですが、
西暦が400で割り切れる年はうるう年である
400で割り切れない場合、西暦が100で割り切れる年はうるう年ではない
100で割り切れない場合、西暦が4で割り切れる年はうるう年である
4で割り切れない場合、うるう年ではない
この言葉からとりあえず書いてみたRubyでのコードがこれ
----------------------------------------
print "西暦→ "
while year = gets.to_i
break if year == 0
if year % 4 == 0
if year % 100 == 0
if year % 400 == 0
puts "うるう年"
else
puts "平年"
end
else
puts "うるう年"
end
else
puts "平年"
end
end
----------------------------------------
プログラム、もう少し直せないのかな
"うるう年"や"平年"が何度も出てきているし、
もうちょっとまとめられないのかなと調べることに
一番はやっぱりwikipediaでしょう
wikipedia最下位部の方でこんな記述
( year % 4 ) == 0 && ( year % 100 ) != 0 || ( year % 400 ) == 0
4で割った余りが0であったら「うるう年」であることは分かったのだけども、
どうも後ろ2つの条件式のつながりが分からずじまいに
あきらめずうるう年で調べていると、
「質問3-6) どの年がうるう年になるの? | 国立天文台(NAOJ)」というタイトルのサイトを見つけ訪問
そこでこんな記述
(1)西暦年号が4で割り切れる年をうるう年とする。
(2)(1)の例外として、西暦年号が100で割り切れて400で割り切れない年は平年とする。
(1)は先ほどの「 ( year % 4 ) == 0」と同じだなと思いつつ、
(2)をみるとなんだか「( year % 100 ) != 0 || ( year % 400 ) == 0」と似ているように見えてきたんですね
ここでなるほどなと思ったのが、
(2)の文章を否定すると「( year % 100 ) != 0 || ( year % 400 ) == 0」と同じになること
否定した文章を書くと、
「西暦年号が100で割り切れず、または、400で割り切れる年はうるう年とする。」
こう解釈するとおのずと「( year % 100 ) != 0 || ( year % 400 ) == 0」になりませんかという、、、
コードはこちら
----------------------------------------
print "西暦→ "
while year = gets.to_i
break if year == 0
if year % 4 == 0 && year % 100 != 0 || year % 400 == 0
puts "うるう年"
else
puts "うるう年でない"
end
end
----------------------------------------
同じように見えることが大事
自分のコードを簡略にかけたと同時に、
うるう年がどういうものか理解したところで、
今回の決め手となったのが「コード」とそれを説明する「文章」
今回はたまたま似たように見えた、かつ、その情報が近くにあったので簡単に理解できましたが、
そうとは限らない方が多そう
ビットコインはまだ世間一般に普及していない(個人的感想)もので、
知っている方は法定通貨(円やドル)と同じ、もしくはそれ以上に便利なものであると理解できますが、
そうで無い方は「ビットコイン」とそれを説明する何かが足りていないように思えます
それこそ法定通貨と同じようなものであるならば、
それを使用してものを購入したりすることと同じように、
「ビットコインで〇〇が買えましたよー」のような情報が必要なのかと思います
「コード」と「文章」で理解できたように、
「法定通貨」と「消費」が結びついているように、
「ビットコイン」で「消費」という同じことをしている安心感を与えることが大事だと、
コードガールこれくしょんを通して学びました(笑
長くなってしまったので今回はこの辺で
それではー