Ver Mensaje Individual
  #5 (permalink)  
Antiguo 07/04/2015, 18:25
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Programa para equipos

Se me ocurre algo como esto:

Código Javascript:
Ver original
  1. var todos = [5, 2, 3, 8, 4, 7, 5, 9, 6, 2],
  2.     grupo1 = [], grupo2 = [], tot1 = 0, tot2 = 0;
  3.  
  4. grupo1.push(Math.max.apply(null, todos)); //Obtengo el valor mayor y lo inserto en 'grupo1'
  5. tot1 += Math.max.apply(null, todos); //Acumulo el valor en 'tot1'
  6. todos.splice(todos.indexOf(Math.max.apply(null, todos)), 1); //Y lo quito de 'todos'
  7.  
  8. grupo2.push(Math.max.apply(null, todos)); //Obtengo el nuevo valor mayor y lo inserto en 'grupo2'
  9. tot2 += Math.max.apply(null, todos); //Acumulo el valor en 'tot2'
  10. todos.splice(todos.indexOf(Math.max.apply(null, todos)), 1); //Y lo quito de 'todos'
  11.  
  12. for (var i = 0, l = todos.length; i < l; i++){
  13.     r = tot1 - tot2;
  14.     if (r <= 5 && r >= -5){
  15.         if (tot1 > tot2){
  16.             grupo2.push(todos[i]);
  17.             tot2 += todos[i];
  18.         }
  19.         else{
  20.             grupo1.push(todos[i]);
  21.             tot1 += todos[i];
  22.         }
  23.     }
  24.     else{
  25.         if (tot1 > tot2){
  26.             grupo2.push(todos[i]);
  27.             tot2 += todos[i];
  28.         }
  29.         else{
  30.             grupo1.push(todos[i]);
  31.             tot1 += todos[i];
  32.         }
  33.     }
  34. }
  35.  
  36. console.log(grupo1, grupo2); //[9, 2, 3, 7, 6] [8, 5, 4, 5, 2] | tot1 - tot2 = 3

Trabajando con los rangos que estableciste en uno de tus comentarios, la adición de elementos a un array u otro dependerá ya sea de si la diferencia se encuentra dentro del rango. Quizá pueda hacerse esto de una manera más eficiente, esta es solo una primitiva y básica idea.

Edito: Repensando el algoritmo, creo que es mejor empezar por tomar a los dos mayores valores del array inicial, colocarlos en los arrays y a partir de ahí empezar la selección. Como cuando los dos mejores son los que forman a los equipos en un partido de fútbol entre amigos (al menos así jugábamos ).

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 07/04/2015 a las 20:07 Razón: Mejora