Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

195
Vistas
¿Cómo iterar matrices desiguales?

aquí tengo dos matrices desiguales (el tamaño de la matriz no es igual), tengo que agregar insertar cuando los números arr1 coinciden en arr2. pero cuando la condición se vuelve falsa, el cero solo debe agregarse una vez en lugar de repetirse. a continuación se muestra el código

 arr2 =[ [[27, 28, 29, 30, 31, 1, 2], 5], [[31, 1, 2, 3, 4, 5, 6], 14], [[26, 27, 28, 29, 30, 31, 1], 22], [[28, 29, 30, 31, 1, 2, 3], 31], [[25, 26, 27, 28, 29, 30, 31], 35], [[27, 28, 29, 30, 31, 1, 2], 44], [[29, 30, 31, 0, 0, 0, 0], 53] ] arr1 = [5, 0, 14, 0, 22, 0, 31, 35, 0, 44, 0, 53] cc = [] arr1.each do|item_arr1| arr2.each_with_index do|item_arr2,index| if item_arr1 == arr2[index][-1] cc << item_arr2 else cc << 0 end end end

producción:

 [ [ [27, 28, 29, 30, 31, 1, 2], 5 ], 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, [ [31, 1, 2, 3, 4, 5, 6], 14 ], 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, [ [26, 27, 28, 29, 30, 31, 1], 22 ], 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, [ [28, 29, 30, 31, 1, 2, 3], 31 ], 0, 0, 0, 0, 0, 0, 0, [ [25, 26, 27, 28, 29, 30, 31], 35 ], 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, [ [27, 28, 29, 30, 31, 1, 2], 44 ], 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, [ [29, 30, 31, 0, 0, 0, 0], 53 ] ]

Rendimiento esperado:

 [ [ [27, 28, 29, 30, 31, 1, 2], 5 ], 0, [ [31, 1, 2, 3, 4, 5, 6], 14 ], 0, [ [26, 27, 28, 29, 30, 31, 1], 22 ], 0, [ [28, 29, 30, 31, 1, 2, 3], 31 ], [ [25, 26, 27, 28, 29, 30, 31], 35 ], 0, [ [27, 28, 29, 30, 31, 1, 2], 44 ], 0, [ [29, 30, 31, 0, 0, 0, 0], 53 ] ]
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Suponiendo que los números son únicos, podría usar rassoc para obtener el subarreglo de arr1 :

 arr1.map { |i| arr2.rassoc(i) || i } #=> [ # [[27, 28, 29, 30, 31, 1, 2], 5], 0, # [[31, 1, 2, 3, 4, 5, 6], 14], 0, # [[26, 27, 28, 29, 30, 31, 1], 22], 0, # [[28, 29, 30, 31, 1, 2, 3], 31], # [[25, 26, 27, 28, 29, 30, 31], 35], 0, # [[27, 28, 29, 30, 31, 1, 2], 44], 0, # [[29, 30, 31, 0, 0, 0, 0], 53] # ]
over 4 years ago · Santiago Trujillo Denunciar

0

Esto no es muy parecido a Ruby, pero debería ser relativamente eficiente porque evita la necesidad de buscar matrices.

 a1 = arr1.size.times.with_object([]) do |i,a| n = arr1[i] next if n.zero? a << (i < arr1.size-1 && arr1[i+1].zero?) end #=> [true, true, true, false, true, true, false]

Se debe insertar un cero después de arr2[i] si a1[i] es true .

 arr2.each_with_object([]) do |a2,a| a << a2 a << 0 if a1.shift end #=> [ # [[27, 28, 29, 30, 31, 1, 2], 5], 0, # [[31, 1, 2, 3, 4, 5, 6], 14], 0, # [[26, 27, 28, 29, 30, 31, 1], 22], 0, # [[28, 29, 30, 31, 1, 2, 3], 31], # [[25, 26, 27, 28, 29, 30, 31], 35], 0, # [[27, 28, 29, 30, 31, 1, 2], 44], 0, # [[29, 30, 31, 0, 0, 0, 0], 53] # ]
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda