func partitionsP(n) { func (n) is cached { n <=1&&return n var a =sum(1..floor((sqrt(24*n +1) +1)/6), {|k| (-1)**(k-1) *__FUNC__(n - ((k*(3*k -1)) >>1)) }) var b =sum(1..ceil((sqrt(24*n +1) -7)/6), {|k| (-1)**(k-1) *__FUNC__(n - ((k*(3*k +1)) >>1)) }) a + b }(n+1)}var t =Time.microsay partitionsP.map(0..25).join(' ')say partitionsP(6666)say ("Took %.4f seconds"%Time.micro-t)