Ordenar por número de llamadas
Crea una función que recibe una lista de funciones y las ordena en orden ascendente según cuántas llamadas necesitan para devolver algo que no sea una función.
Ejemplos
f1 = -> {"hello"}
# f1[] ➞ "hello"
f2 = -> {-> {"edabit"}}
# f2[][] ➞ "edabit"
f3 = -> {-> {-> {"user"}}}
# f3[][][] ➞ "user"
func_sort([f2, f3, f1]) ➞ [f1, f2, f3]
# [f2, f3, f1] ➞ [2, 3, 1] ➞ [1, 2, 3] ➞ [f1, f2, f3]
func_sort([f1, f2, f3]) ➞ [f1, f2, f3]
# [f1, f2, f3] ➞ [1, 2, 3] ➞ [1, 2, 3] ➞ [f1, f2, f3]
func_sort([f2, "func"]) ➞ ["func", f2]
# [f2, "func"] ➞ [2, 0] ➞ [0, 2] ➞ ["func", f2]Notas
- Trata los elementos que no sean funciones como si necesitaran cero llamadas.
- Cada función se llamará sin parámetros.
- Será necesario llamar a cada función al menos una vez.
- Entre los posibles valores devueltos se incluyen
Integers,Floats yArrays, entre otros.