Ver Mensaje Individual
  #22 (permalink)  
Antiguo 15/12/2013, 12:11
Avatar de marlanga
marlanga
 
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 11 meses
Puntos: 206
Respuesta: Propuesta para desafíos javascript 2014

Correcto aijona.
¿He de suponer que ya tenemos otro caballo de competición en la futura carrera?

Y ya que has puesto un código genérico, voy a lucirme diciéndote cómo aplicarle una técnica llamada "curry" que es muy apropiada para este caso.

Curry consiste en pre-almacenar argumentos en un buffer de memoria para utilizarlos es llamadas posteriores a alguna función en particular. La mejor forma de implementarla es insertarla en el prototipo del objeto Fuction:

Código Javascript:
Ver original
  1. Function.prototype.curry=function(){
  2.     var aps = Array.prototype.slice;
  3.     var self=this;
  4.     var args=aps.call(arguments);
  5.     return function(){
  6.         return self.apply(self, args.concat(aps.call(arguments)));
  7.     }
  8. };
  9.  
  10. function getMin(pos,arr) {
  11.     pos = pos || 0;
  12.     return arr
  13.             .reduce(function(m, c) {
  14.                 if(m.indexOf(c) == -1) m.push(c);
  15.                 return m;
  16.             }, [])
  17.             .sort(function(a, b) {
  18.                 return a > b ? 1 : -1;
  19.             })[pos] || false;
  20. }
  21.  
  22. var tercero = getMin.curry(2);

Como puedes ver, es una solución parecida a la tuya, con la diferencia de que con curry yo puedo crear funciones con valores predefinidos dinámicamente sin esfuerzo.



En cuanto a lynx, ya sé cómo es el morse, pero como le dije a IsabelM, si separo los caracteres morse con espacios, el reto de decodificar no tendría ningún sentido. Yo quiero que calculéis esas miles de posibilidades.

Última edición por marlanga; 15/12/2013 a las 12:18