This commit is contained in:
2025-02-01 23:50:01 +01:00
parent bbc549c3ea
commit 2dab36b36e
3 changed files with 36 additions and 0 deletions

View File

@@ -0,0 +1,17 @@
/**
* 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);
}