Rompecabezas: Reunir y ordenar
Crea una función gather que acepte un argumento de tipo string y devuelva otra función.
Las llamadas a la función deben permitir un encadenamiento continuo hasta llamar a order.
order debe aceptar un número como argumento y devolver otra función. Las llamadas a la función deben permitir un encadenamiento continuo hasta llamar a get.
get debe devolver todos los argumentos proporcionados a las funciones gather como un string en el orden especificado en las funciones order.
Ejemplos
gather("a")("b")("c").order(0)(1)(2).get() ➞ "abc"
gather("a")("b")("c").order(2)(1)(0).get() ➞ "cba"
gather("e")("l")("o")("l")("!")("h").order(5)(0)(1)(3)(2)(4).get() ➞ "hello!"Notas
Se espera que gather y order se encadenen cualquier cantidad de veces, pero siempre con la misma cantidad de invocaciones para cada una (es decir, ambas funciones siempre se encadenarán la misma cantidad de veces).