Rango alfabético

Como sabes, la función range() devuelve un rango de números, pero no funciona con alfabetos. En este desafío, intentamos llenar ese vacío.

Escribe una función alpha_range() que reciba tres argumentos: start, stop y step (cuyo valor predeterminado es uno). La función debe devolver una lista de caracteres alfabéticos, desde el carácter inicial hasta el carácter final, según el valor de step.

La función debe cumplir estas condiciones:

  • Si step es cero, mayor o igual que 26, o menor o igual que -26, devuelve "step must be a non-zero value between -26 and 26, exclusive".

  • Tanto start como stop deben tener la misma capitalización; de lo contrario, devuelve "both start and stop must share the same case".

Al igual que la función range():

  • step no debe ser cero.

A diferencia de la función range():

  • la lista devuelta debe incluir ambos extremos.
  • el orden de los caracteres no afecta el resultado (es decir, la salida de alpha_range("a", "f") es la misma que la de alpha_range("f", "a"); consulta los ejemplos).

Ejemplos

alpha_range("a", "f") ➞ ["a", "b", "c", "d", "e", "f"]

alpha_range("f", "a") ➞ ["a", "b", "c", "d", "e", "f"]

alpha_range("a", "f", -1) ➞ ["f", "e", "d", "c", "b", "a"]

alpha_range("f", "a", -1) ➞ ["f", "e", "d", "c", "b", "a"]

alpha_range("A", "F", -1) ➞ ["F", "E", "D", "C", "B", "A"]

alpha_range("A", "F", 0) ➞ "step must be a non-zero value between -26 and 26, exclusive"

alpha_range("A", "F", -26) ➞ "step must be a non-zero value between -26 and 26, exclusive"

alpha_range("a", "F", -1) ➞ "both start and stop must share the same case"

Notas

Todos los valores de start y stop en las pruebas son caracteres alfabéticos válidos.