class Array def *(a) n = Array.new [ alen = self.length, blen = a.length].max. times do |x| n[x] = ( self[x] || 0 ) * ( a[x] || 0 ) end n end end #[ 2,4,4 ] * [ 5,5 ] # =>[10,20,0]