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,8 @@
Implement a function that receives two IPv4 addresses, and returns the number of addresses between them (including the first one, excluding the last one).
All inputs will be valid IPv4 addresses in the form of strings. The last address will always be greater than the first one.
Examples
* With input "10.0.0.0", "10.0.0.50" => return 50
* With input "10.0.0.0", "10.0.1.0" => return 256
* With input "20.0.0.10", "20.0.1.0" => return 246

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);
}

View File

@@ -0,0 +1,11 @@
// See https://www.chaijs.com for how to use Chai.
import { assert } from "chai";
import { ipsBetween } from "./solution";
// TODO Add your tests here
describe("example", function() {
it("test", function() {
assert.equal(ipsBetween("10.0.0.0", "10.0.0.50"), 50, 'ipsBetween("10.0.0.0", "10.0.0.50")');
assert.equal(ipsBetween("20.0.0.10", "20.0.1.0"), 246, 'ipsBetween("20.0.0.10", "20.0.1.0")');
});
});