Advertisement
ifXE9-Hb62tS

?

Sep 8th, 2015
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 0.72 KB | None | 0 0
  1. #2015/09/08 23:08 バグを修正(l11)
  2. #2015/09/09 06:26 バグを修正(l10)
  3. #2015/09/09 06:35 全体的にどうかしたけど本質は変わってないよ
  4.  
  5. Integer.define_method(:[]) do |*a|
  6.   n = self
  7.   return n+1 if a.size==0
  8.   return f n[*a.drop(1)] if a[0]==0
  9.   if a[-1]==0
  10.     i = a.rindex{|b|b!=0}
  11.     a[i] -= 1
  12.     r = n
  13.     n.times{ a[i+1] = r; r = n[*a.dup] }
  14.   elsif a[-2]==0 or a.size==1
  15.     r = n
  16.     a[-1] -= 1
  17.     n.times{ r = r[*a.dup] }
  18.   else
  19.     a[-1] -= 1
  20.     r = n[*a.dup]
  21.     a[-2] -= 1
  22.     n.times{ a[-1] = r; r = n[*a.dup] }
  23.   end
  24.   return r
  25. end
  26.  
  27. #----
  28.  
  29. def g m,n
  30.   return g n[*Array.new(n,n)] if m==0
  31.   r = n
  32.   g(m-1,n).times{ r = g(m-1,n) }
  33.   r
  34. end
  35.  
  36. p 3[3,3,3,3]
  37. p g(9,9)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement