def compose(*enumerables)
      res=[]
      enumerables.map(&:size).max.times do
        tupla=[]
        for enumerable in enumerables
          tupla << enumerable.shift
        end
        res << (block_given? ? yield(tupla) : tupla)
      end
      res
    end
def compose(*enumerables)
      res=[]
      enumerables.map(&:size).max.times do
        tupla=[]
        for enumerable in enumerables
          tupla << enumerable.shift
        end
        res << (block_given? ? yield(tupla) : tupla)
      end
      res
    end
torna un array on cada element es una tupla formada per
 un element de cada enumerable. Si se li passa un bloc
 se li passa al bloc cada tupla i el resultat del bloc
 s'emmagatzema a l'array tornat.