Ver Mensaje Individual
  #98 (permalink)  
Antiguo 13/01/2014, 13:25
Pantaláimon
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 244
Antigüedad: 18 años, 5 meses
Puntos: 32
Respuesta: Propuesta para desafíos javascript 2014

Aquí la solución freak:

Código Javascript:
Ver original
  1. function baileHungaro( bailarines, primero, ultimo ) {
  2.     if( ultimo - primero > 0 ) {
  3.         console.log( 'EMPIEZA EL BAILE ' + primero + '-' + ultimo );
  4.         var sombrero = new Sombrero( bailarines, primero, ultimo );
  5.    
  6.         sombrero.asignarSombrero(  'negro' , primero);
  7.         sombrero.asignarSombrero( 'granate', ultimo );
  8.  
  9.         while( sombrero.negro.sigueBailando() ) {
  10.             sombrero.negro.baila();
  11.             sombrero.granate.baila();
  12.             if( sombrero.negro.parejaAdecuada( sombrero.granate ) ) {
  13.                 sombrero.negro.seCruzaCon( sombrero.granate );
  14.             } else {
  15.                 sombrero.granate.volverAlSitio();          
  16.             }
  17.             sombrero.granate.pasaSombrero();
  18.         }
  19.  
  20.         baileHungaro( bailarines, primero, sombrero.negro.posicion-1 );
  21.         baileHungaro( bailarines, sombrero.negro.posicion+1,  ultimo );
  22.     }
  23. }
Esta es la función principal que la he hecho para que al leerla recuerde a los movimientos que hacen los bailarines en el video. Aquí la versión entera:

http://jsfiddle.net/jefebrondem/pTmpV/

Y luego recordaba de memoria una versión en Haskell de quickSort que era muy bella por lo corta que se podía expresar :
Código Haskell:
Ver original
  1. quickSort l:ls = quickSort (filter (<l) ls) ++ [l] ++ (filter (>=l) ls)
  2. quickSort [] = []
Que en Javascript se transforma en un código desagradable de leer:
http://jsfiddle.net/jefebrondem/93qkp/

Usaré la segunda para el concurso de eficiencia aunque en ninguno de los dos casos la he buscado.

Un saludo!
__________________
github.com/xgbuils | npm/xgbuils