library(bit64)
popCount <- function(x) sum(as.numeric(strsplit(as.bitstring(as.integer64(x)), "")[[1]]))
finder <- function()
{
  odious <- evil <- integer(0)
  x <- odiousLength <- evilLength <- 0
  while(evilLength + odiousLength != 60)
  {
    if(popCount(x) %% 2 == 0) evil[evilLength + 1] <- x else odious[odiousLength + 1] <- x
    x <- x + 1
    evilLength <- length(evil)
    odiousLength <- length(odious)
  }
  cat("The pop count of the 1st 30 powers of 3 are:", sapply(3^(0:29), popCount), "\n")
  cat("The first 30 evil numbers are:", evil, "\n")
  cat("The first 30 odious numbers are:", odious)
}
finder()