Tengo la siguiente matriz:
arr = [ "Assignment:Chapter 1 Code Exercises (Real)", [100, 100, 100, 100, 100, 100, 100, 100], "Assignment:Chapter 2 Code Exercises (Real)", [93, 75, 100, 100, 100, 55, 75, 100], "Assignment:Chapter 3 Code Exercises (Real)", [100, 80, 100, 100, 90, 85, 65, 100], "Assignment:Chapter 4 Code Exercises (Real)", [100, 90, 100, 100, 95, 100, 75, 70], "Assignment:Chapter 5 Code Exercises (Real)", [50, 100, 100, 100, 60, 70, 90, 100], "Assignment:Chapter 6 Code Exercises (Real)", [0, 85, 100, 100, 60, 85, 70, 85, 100], "Assignment:Chapter 14 Code Exercises (Real)", [75, 90, 100, 100, 0, 100, 0, 100], "Assignment:Chapter 15 Code Exercises (Real)", [97, 100, 100, 100, 0, 100, 0, 100] ]Me gustaría convertir esto a:
[ ["Assignment:Chapter 1 Code Exercises (Real)", 100, 100, 100, 100, 100, 100, 100, 100], ["Assignment:Chapter 2 Code Exercises (Real)", 93, 75, 100, 100, 100, 55, 75, 100], ["Assignment:Chapter 3 Code Exercises (Real)", 100, 80, 100, 100, 90, 85, 65, 100], ["Assignment:Chapter 4 Code Exercises (Real)", 100, 90, 100, 100, 95, 100, 75, 70], ["Assignment:Chapter 5 Code Exercises (Real)", 50, 100, 100, 100, 60, 70, 90, 100], ["Assignment:Chapter 6 Code Exercises (Real)", 0, 85, 100, 100, 60, 85, 70, 85], 100], ["Assignment:Chapter 14 Code Exercises (Real)", 75, 90, 100, 100, 0, 100, 0, 100], ["Assignment:Chapter 15 Code Exercises (Real)", 97, 100, 100, 100, 0, 100, 0, 100] ] flatten demasiado "plano". También probé flatten(1).
array.each_slice(2).map { |(x,y)| [x] + y } #=> [["Assignment:Chapter 1 Code Exercises (Real)", 100, 100, 100, 100, 100, 100, 100, 100], # ["Assignment:Chapter 2 Code Exercises (Real)", 93, 75, 100, 100, 100, 55, 75, 100], # ["Assignment:Chapter 3 Code Exercises (Real)", 100, 80, 100, 100, 90, 85, 65, 100], # ["Assignment:Chapter 4 Code Exercises (Real)", 100, 90, 100, 100, 95, 100, 75, 70], # ["Assignment:Chapter 5 Code Exercises (Real)", 50, 100, 100, 100, 60, 70, 90, 100], # ["Assignment:Chapter 6 Code Exercises (Real)", 0, 85, 100, 100, 60, 85, 70, 85, 100], # ["Assignment:Chapter 14 Code Exercises (Real)", 75, 90, 100, 100, 0, 100, 0, 100], # ["Assignment:Chapter 15 Code Exercises (Real)", 97, 100, 100, 100, 0, 100, 0, 100]]> Hash[*a].map(&:flatten) => [["Assignment:Chapter 1 Code Exercises (Real)", 100, 100, 100, 100, 100, 100, 100, 100], ["Assignment:Chapter 2 Code Exercises (Real)", 93, 75, 100, 100, 100, 55, 75, 100], ["Assignment:Chapter 3 Code Exercises (Real)", 100, 80, 100, 100, 90, 85, 65, 100], ["Assignment:Chapter 4 Code Exercises (Real)", 100, 90, 100, 100, 95, 100, 75, 70], ["Assignment:Chapter 5 Code Exercises (Real)", 50, 100, 100, 100, 60, 70, 90, 100], ["Assignment:Chapter 6 Code Exercises (Real)", 0, 85, 100, 100, 60, 85, 70, 85, 100], ["Assignment:Chapter 14 Code Exercises (Real)", 75, 90, 100, 100, 0, 100, 0, 100], ["Assignment:Chapter 15 Code Exercises (Real)", 97, 100, 100, 100, 0, 100, 0, 100]] donde a es la primera matriz anterior.
Alternativamente, siguiendo la recomendación de @CarySwoveland:
a.each_slice(2).map(&:flatten)es más eficiente con el tiempo y la memoria, y no requiere que las cadenas sean únicas.