Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #2015/09/08 23:08 バグを修正(l11)
- #2015/09/09 06:26 バグを修正(l10)
- #2015/09/09 06:35 全体的にどうかしたけど本質は変わってないよ
- Integer.define_method(:[]) do |*a|
- n = self
- return n+1 if a.size==0
- return f n[*a.drop(1)] if a[0]==0
- if a[-1]==0
- i = a.rindex{|b|b!=0}
- a[i] -= 1
- r = n
- n.times{ a[i+1] = r; r = n[*a.dup] }
- elsif a[-2]==0 or a.size==1
- r = n
- a[-1] -= 1
- n.times{ r = r[*a.dup] }
- else
- a[-1] -= 1
- r = n[*a.dup]
- a[-2] -= 1
- n.times{ a[-1] = r; r = n[*a.dup] }
- end
- return r
- end
- #----
- def g m,n
- return g n[*Array.new(n,n)] if m==0
- r = n
- g(m-1,n).times{ r = g(m-1,n) }
- r
- end
- p 3[3,3,3,3]
- p g(9,9)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement