function num_string_range(start, end, step)   
  {  
    var range = [];  
    if ((step === 0) || (typeof start == "undefined" || typeof end ==    "undefined") || (typeof start != typeof end))  
     return false;  
    
    if (end < start) {  
        step = -step;  
    }  
  
    if (typeof start == "number") {  
  
        while (step > 0 ? end >= start : end <= start) {  
            range.push(start);  
            start += step;  
        }  
        }   
      else if (typeof start == "string") {  
  
        if (start.length != 1 || end.length != 1) {  
            throw TypeError("Strings with one character are supported.");  
        }  
  
        start = start.charCodeAt(0);  
        end = end.charCodeAt(0);  
  
        while (step > 0 ? end >= start : end <= start) {  
            range.push(String.fromCharCode(start));  
            start += step;  
        }  
  
    }  
     
    else  
       {  
        throw TypeError("Only string and number are supported");  
        }  
  
    return range;  
  
}  
  
console.log(num_string_range('a', "z", 2));  
console.log(num_string_range("Z", "A", 2));  
console.log(num_string_range(0, -5, 1));  
console.log(num_string_range(0, 25, 5));  
console.log(num_string_range(20, 5, 5));  