麻雀わかんね
解いた
makeplex salon:あなたのスキルで飯は食えるか? 史上最大のコーディングスキル判定 (1/2) - ITmedia エンタープライズ
所要時間はなんと3時間オーバー。重複対策と文字列出力時間かけ過ぎた。
def akagi(str) a = str.split(//).map{|l| l.to_i} strs = [] for n in 1..9 res = [] hoge((a + [n]).sort,res) if res.each{|l| strs += a2s(l, n)} end strs.uniq end def cheat(a,res) (a.count/2).times{|i| return false if a[i/2] != a[i/2+1]} true end def a2s(a, n) strs = [] a.each do |b| if b.include?(n) str = '' u = a.clone u.delete_at(u.index(b)) u.each{|c|str += '(' + c.join('') + ')'} u = b.clone u.delete_at(u.index(n)) strs << str + '[' + u.join('') +']' end end strs.uniq end def huga(a, b, res) if a.count == 0 res << b return end #3こそろったやつ探す if a[0] == a[1] && a[1] == a[2] u = a.slice(3..a.count) huga(u, b + [[a[0]]*3], res) end #3これんぞくのやつ探す if a[0] < 8 && a.include?(a[0] + 1) && a.include?(a[0] + 2) u = a.clone 3.times{|i| u.delete_at(u.index(a[0] + i))} huga(u, b + [[a[0], a[0]+1, a[0]+2]],res) end end #2こそろったやつ探す def hoge(a,res) a.uniq.each do |l| if a.select{|x| x == l}.count >= 2 u = a.clone u.delete_at(u.index(l)) u.delete_at(u.index(l)) huga(u, [[l,l]], res) end end end puts akagi(ARGV[0]).join(',')