In [1]:
library(foreach)
In [2]:
input <- read.table("Data.txt", header = FALSE, sep = "-")
BlockRange <- list()
current <- 0
In [3]:
BlockRange <- list()
original <- input
currentMin <- 0
currentMax <- 0
pMax <- 0
while(length(original)>0){
notFound = TRUE
currentMin <- min(original$V1)
while(notFound){
tt <- min(original$V1)
if(currentMax<tt){
notFound = FALSE
} else{
idx <- which(original$V1==tt)
pMax <- max(original$V2[idx],pMax)
currentMax <- original$V2[idx]+1
original <<- original[-idx,]
}
}
BlockRange[[length(BlockRange)+1]] <- list(currentMin,pMax)
currentMax <- min(original$V1)
}
In [4]:
first <- 0
firstFound <- FALSE
x <- 1
while(!firstFound){
if(BlockRange[[x+1]][[1]]>BlockRange[[x]][[2]]){
first <- BlockRange[[x]][[2]]+1
firstFound <- TRUE
}
x <- x+1
}
cat(first)
In [5]:
sum <- 0
aa <- foreach(x = 1:(length(BlockRange)-1)) %do% {
sum <- sum + max(0,(BlockRange[[x+1]][[1]]-BlockRange[[x]][[2]])-1)
}
cat(sum)
In [6]:
cat("Q1- The First accepted IP address is : ", first, '\n')
cat("Q2- The total amount of IP address is : ", sum, '\n')