/** * Regards an IP address as a number with 4 digits. * Each digit can be between 0 and 255. * The result of this function is the total number of possible IPs 'lower' than the given IP. */ const ipToNum = (ip: string): number => { const digits = ip.split('.').map(Number) as [number, number, number, number]; console.log(digits); if(digits.length !== 4) { throw new Error('Invalid IP address'); } return digits.reduce((sum, digit) => sum * 256 + digit, 0); } export function ipsBetween(start: string, end: string): number { return ipToNum(end) - ipToNum(start); }