みなさま
あけましておめでとうございます。
今年もTECHSCOREならびにTECHSCOREBLOGよろしくお願い致します。
どうも村上です。
去年はJavaな記事を書きましたが、今年1発目はRubyの記事です。
タイトルにもありますが、2013年4月5日ってどういう日か知ってますか?
なんと、201345と重複する数字がない日なのです!!
はい。
どうでもいいですね。
年末・年始にTwitterを見てたらたまたま見つけたことです。
この重複しない日をRubyでちょこっと調べてみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
def duplicate?(date) num_s = date.strftime("%Y").to_i.to_s + date.strftime("%m").to_i.to_s + date.strftime("%d").to_i.to_s vals = Set.new duplicate = false num_s.each_char do |s| if vals.include?(s) duplicate = true break else vals.add(s) end end return duplicate end |
こんな感じで、重複するかどうかを判断するメソッドを作って後はループですね。
ちなみに「1月」などは「01月」ではなく「1月」とするようにしています。
(よく思いますが、こういう文字列操作みたいなコードってあんまり綺麗に書けないのですが、私だけでしょうか?)
っで2013年でループしてみると
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
2013年4月5日 2013年4月6日 2013年4月7日 2013年4月8日 2013年4月9日 2013年5月4日 2013年5月6日 2013年5月7日 2013年5月8日 2013年5月9日 2013年6月4日 2013年6月5日 2013年6月7日 2013年6月8日 2013年6月9日 2013年7月4日 2013年7月5日 2013年7月6日 2013年7月8日 2013年7月9日 2013年8月4日 2013年8月5日 2013年8月6日 2013年8月7日 2013年8月9日 2013年9月4日 2013年9月5日 2013年9月6日 2013年9月7日 2013年9月8日 |
が該当しました。
また、「2013年4月5日」の前は「1987年6月30日」でした。
26年ぶりです。
ちなみに「01月」のようにゼロ埋めを考慮すると
前の重複しない日は「1987年06月25日」で次回は「2345年06月17日」です。
そうとう長生きしないと次回は過ごすことはできませんね。
というわけで2013年もよろしくお願い致します。
Comments
もう少し早くこの記事を見つけていれば...
とっくに終わってしまってる