Created
October 6, 2015 04:28
-
-
Save nihilismus/13f0d850529cac3e80b1 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var E = (function() { | |
var _f1 = function(v) { | |
var vocal_siguiente = { | |
"a": "e", | |
"e": "i", | |
"i": "o", | |
"o": "u", | |
"u": "a" | |
}; | |
if (vocal_siguiente[v] === undefined) { | |
return v; | |
} | |
return vocal_siguiente[v]; | |
}; | |
var _f2 = function(v, n) { | |
var arr_salida = []; | |
if (n <= 0) { | |
return arr_salida; | |
} | |
arr_salida.push( _f1( v ) ); | |
for (var i = 1; i < n; i++) { | |
arr_salida.push( _f1( arr_salida[arr_salida.length - 1] ) ); | |
} | |
return arr_salida; | |
}; | |
var _f3 = function(v1, v2) { | |
var arr_salida = []; | |
var siguientes_diez = _f2( v1, 10 ); | |
for (var i = 0; i < siguientes_diez.length; i++) { | |
if (siguientes_diez[i] === v2) { | |
break; | |
} | |
arr_salida.push( siguientes_diez[i] ); | |
} | |
return arr_salida; | |
}; | |
var _f4 = function(s1) { | |
var s2 = ""; | |
var es_vocal = function(v) { | |
return _f1( v ) !== v; | |
}; | |
for (var i = 0; i < s1.length; i++) { | |
if ( es_vocal( s1[i] ) ) { | |
s2 += _f2( s1[i], 3 )[2]; | |
} else { | |
s2 += s1[i] | |
} | |
} | |
return s2; | |
}; | |
var _f5 = function(s1) { | |
var s2 = ""; | |
var vocal_descifrada = function(v) { | |
var original_nueva = { | |
"o": "a", | |
"u": "e", | |
"a": "i", | |
"e": "o", | |
"i": "u" | |
}; | |
if (original_nueva[v] === undefined) { | |
return v; | |
} | |
return original_nueva[v]; | |
} | |
for (var i = 0; i < s1.length; i++) { | |
s2 += vocal_descifrada( s1[i] ); | |
} | |
return s2; | |
}; | |
return { | |
"f1": _f1, | |
"f2": _f2, | |
"f3": _f3, | |
"f4": _f4, | |
"f5": _f5 | |
}; | |
})(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* E.f1 : Dada una letra vocal V, regresar la siguiente letra vocal a esta | |
* de una secuencia ordenada de letras vocales donde la siguiente letra | |
* a la 'u' es la 'a' | |
* | |
* Si el argumento dado no es una vocal, regresar el mismo argumento. | |
* | |
*/ | |
QUnit.test("E.f1", function(assert) { | |
assert.equal(E.f1('a'), 'e'); | |
assert.equal(E.f1('e'), 'i'); | |
assert.equal(E.f1('i'), 'o'); | |
assert.equal(E.f1('o'), 'u'); | |
assert.equal(E.f1('u'), 'a'); | |
assert.equal(E.f1(''), ''); | |
assert.equal(E.f1('@'), '@'); | |
assert.equal(E.f1('hola'), 'hola'); | |
assert.equal(E.f1(123), 123); | |
}); | |
/* | |
* | |
* E.f2 : Dada una letra vocal V y un número entero N, regresar un arreglo | |
* con las siguientes N letras vocales a V de una secuencia ordenada | |
* ciclica ('infinita') de letras vocales. | |
* | |
* Secuencia ordenada ciclica: a, e, i, o, u, a, e, i, o, u, ..., a, e, i, o, ... | |
* | |
*/ | |
QUnit.test("E.f2", function(assert) { | |
assert.deepEqual(E.f2('i', 0), []); | |
assert.deepEqual(E.f2('u', -2), []); | |
assert.deepEqual(E.f2('e', 3), ['i', 'o', 'u']); | |
assert.deepEqual(E.f2('a', 1), ['e']); | |
assert.deepEqual(E.f2('o', 5), ['u','a','e','i','o']); | |
assert.deepEqual(E.f2('i', 10), ['o', 'u', 'a', 'e', 'i', 'o', 'u', 'a', 'e', 'i']); | |
}); | |
/* | |
* E.f3 : Dada dos letras vocales, V1 y V2, regresar un arreglo con las letras vocales | |
* entre V1 y V2 (la más inmediata a V1) de una secuencia ordenada ciclica ('infinita') | |
* de letras vocales. | |
* | |
* Secuencia ordenada ciclica: a, e, i, o, u, a, e, i, o, u, ..., a, e, i, o, ... | |
* Ejemplos: | |
* Entre la 'i' y la 'o' no existe alguna letra, por lo tanto se regresa [] | |
* Entre la 'i' y la 'u' se encuenta la 'o', por lo tanto se regresa ['o'] | |
* Entre la 'i' y la 'a' se encuenta la 'o' y la 'u', por lo tanto se regresa ['o', 'u'] | |
* | |
*/ | |
QUnit.test("E.f3", function(assert){ | |
assert.deepEqual(E.f3('a', 'e'), []); | |
assert.deepEqual(E.f3('i', 'o'), []); | |
assert.deepEqual(E.f3('u', 'a'), []); | |
assert.deepEqual(E.f3('a', 'i'), ['e']); | |
assert.deepEqual(E.f3('i', 'u'), ['o']); | |
assert.deepEqual(E.f3('u', 'e'), ['a']); | |
assert.deepEqual(E.f3('a', 'o'), ['e', 'i']); | |
assert.deepEqual(E.f3('i', 'a'), ['o', 'u']); | |
assert.deepEqual(E.f3('u', 'i'), ['a', 'e']); | |
assert.deepEqual(E.f3('e', 'a'), ['i', 'o', 'u']); | |
assert.deepEqual(E.f3('o', 'i'), ['u', 'a', 'e']); | |
assert.deepEqual(E.f3('a', 'u'), ['e', 'i', 'o']); | |
assert.deepEqual(E.f3('a', 'a'), ['e', 'i', 'o', 'u']); | |
assert.deepEqual(E.f3('i', 'i'), ['o', 'u', 'a', 'e']); | |
assert.deepEqual(E.f3('u', 'u'), ['a', 'e', 'i', 'o']); | |
}); | |
/* | |
* E.f4 : Dada una cadena de caracteres S1, regresar una cadena de caracteres S2 | |
* donde las letras vocales en S1 sean sustituidas por la 3a. siguiente letra | |
* vocal de una secuencia ordenada ciclica ('finita') de letras vocales. | |
* | |
* Secuencia ordenada ciclica: a, e, i, o, u, a, e, i, o, u, ..., a, e, i, o, ... | |
* Ejemplo de sustituciones: o => e, e => u, u => i | |
* | |
* ¡CIFRADO! | |
* | |
*/ | |
QUnit.test("E.f4", function(assert){ | |
assert.equal(E.f4(""), ""); | |
assert.equal(E.f4("#"), "#"); | |
assert.equal(E.f4("1x2y3z4"), "1x2y3z4"); | |
assert.equal(E.f4("hola mundo feliz!"), "helo minde fulaz!"); | |
assert.equal(E.f4("[email protected]"), "[email protected]"); | |
}); | |
/* | |
* E.f5 : Dada una cadena de caracteres S1, generada a partir de E.f4, | |
* descifrarla. | |
* | |
* ¡DESCIFRADO! | |
*/ | |
QUnit.test("E.f5", function(assert){ | |
assert.equal(E.f5(""), ""); | |
assert.equal(E.f5("#"), "#"); | |
assert.equal(E.f5("1x2y3z4"), "1x2y3z4"); | |
assert.equal(E.f5("helo minde fulaz!"), "hola mundo feliz!"); | |
assert.equal(E.f5("[email protected]"), "[email protected]"); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment