CodeIQ のナムドット問題( https://codeiq.jp/ace/yuki_hiroshi/q468 )に取り組んでみた。
規則性の発見に数時間を要したと思う。
規則性がわかれば実装はそんなにかからなかったと思う。
測ってないけど。
で。
私が書いたのはこんな感じ。
maps = (0..( "01234".to_i(5))).map{ |raw_number| penta_num=("00000"+raw_number.to_s(5))[-5,5] used=penta_num.chars.uniq penta_num.chars.map{ |c| used.index(c) }.join }.uniq maps.each_with_index{ |proj,index| # printf "%2d : " % (index+1) puts 5.times.each_with_object( [""]*5 ){ |ix, o| o[proj[ix].to_i]+="#{ix+1}" }.select{ |i| ! i.empty? }.join(".") }
問題を解いてから wikipedia で 52 を調べた( wikipedia:52 )ら、案の定答えがあった。
ベル数( wikipedia:ベル数 )という名前らしい。
言葉で数を表現する遊び( http://d.hatena.ne.jp/Nabetani/20061011/p2 )としては
といったところ。
追記:正解だったらしい。ほ。