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 originalFunction.prototype.curry=function(){
var aps = Array.prototype.slice;
var self=this;
var args=aps.call(arguments);
return function(){
return self.apply(self, args.concat(aps.call(arguments)));
}
};
function getMin(pos,arr) {
pos = pos || 0;
return arr
.reduce(function(m, c) {
if(m.indexOf(c) == -1) m.push(c);
return m;
}, [])
.sort(function(a, b) {
return a > b ? 1 : -1;
})[pos] || false;
}
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.