#!/usr/bin/Rscript find_missing_number <- function(list) { numbers <- logical(length(list)+1) for(number in list) numbers[number] <- TRUE return(which(!numbers)) } # same function, without using "which" (linear time is obvious here...) find_missing_number_ <- function(list) { numbers <- logical(length(list)+1) for(number in list) numbers[number] <- TRUE for(number in 1:length(numbers)) if(!numbers[number]) return(number) } # just for fun: the function written as short as possible (but sort() has non-linear time!) find_missing_number_short <- function(list) which(diff(sort(c(0,list)))>1) l <- sample(1:50, 49) cat("unsorted list:", l, "\n") cat("( sorted list:", sort(l), ")\n") cat("missing number:", find_missing_number(l), "\n")