#start with x pirates and 1 coconut gathered before night time
pirates <- 7
initial_coconuts <- 1

#a function to iterate the pirates hoarding the coconuts for themselves
coconut_hoarding <- function(coconuts) {
  #monkey gets one
  coconuts <- coconuts - 1
  
  #split into 7
  bunch_size <- coconuts / pirates
  
  #if not a whole number then this cant be the answer
  if(bunch_size %% 1 == 0) {
    #remove one bunch
    coconuts <- coconuts - bunch_size
    
    #take one away from the hoading turns left
    hoarding_turns_left <<- hoarding_turns_left - 1
  } else {
    #else reset everything
    #start with one more cocunut next time
    initial_coconuts <<- initial_coconuts + 1
    coconuts <- initial_coconuts
    
    hoarding_turns_left <<- pirates
  }
  return(coconuts)
}

#set up with the initial number of coconuts and number of turns = pirates
coconuts <- initial_coconuts
hoarding_turns_left <- pirates
#keep going until every pirate has had their turn
while(hoarding_turns_left > 0) {
  #run the function for pirates to steal coconuts
  coconuts <- coconut_hoarding(coconuts)
  
  #if no turns left check if there are still coconuts for the pirates
  if(hoarding_turns_left == 0) {
    #if coconuts can be evenly divided and there are greater than zero
    if(coconuts %% pirates == 0 & coconuts > 0) {
      #hooray!
      print(paste("only", initial_coconuts, "needed!"))
    } else {
      #reset the function
      initial_coconuts <- initial_coconuts + 1
      coconuts <- initial_coconuts
      hoarding_turns_left <- pirates
    }
  }
}
## [1] "only 823537 needed!"
#do the same but for x pirates as a variable
for(pirates in 2:7) {
  initial_coconuts <- 1
  coconuts <- initial_coconuts
  hoarding_turns_left <- pirates
  
  while(hoarding_turns_left > 0) {
    if(hoarding_turns_left == pirates) {
      coconuts_taken <- c()
    }
    
    coconuts_before <- coconuts
    coconuts <- coconut_hoarding(coconuts)
    coconuts_taken <- append(coconuts_taken, coconuts_before - (coconuts+1))
    
    if(hoarding_turns_left == 0) {
      if(coconuts %% pirates == 0 & coconuts > 0) {
        final_coconuts <- coconuts / pirates
        #for x pirates how many coconuts do we need to gather
        print(paste("for", pirates, "pirates:"))
        print(paste("only", initial_coconuts, "needed!"))
        #how many coconuts does each pirate get?
        print(paste("one pirate gets", (coconuts_taken + final_coconuts), "coconuts!"))
        
        } else {
          initial_coconuts <- initial_coconuts + 1
          coconuts <- initial_coconuts
          hoarding_turns_left <- pirates
        }
    }
  }
}
## [1] "for 2 pirates:"
## [1] "only 11 needed!"
## [1] "one pirate gets 6 coconuts!" "one pirate gets 3 coconuts!"
## [1] "for 3 pirates:"
## [1] "only 25 needed!"
## [1] "one pirate gets 10 coconuts!" "one pirate gets 7 coconuts!" 
## [3] "one pirate gets 5 coconuts!" 
## [1] "for 4 pirates:"
## [1] "only 765 needed!"
## [1] "one pirate gets 251 coconuts!" "one pirate gets 203 coconuts!"
## [3] "one pirate gets 167 coconuts!" "one pirate gets 140 coconuts!"
## [1] "for 5 pirates:"
## [1] "only 3121 needed!"
## [1] "one pirate gets 828 coconuts!" "one pirate gets 703 coconuts!"
## [3] "one pirate gets 603 coconuts!" "one pirate gets 523 coconuts!"
## [5] "one pirate gets 459 coconuts!"
## [1] "for 6 pirates:"
## [1] "only 233275 needed!"
## [1] "one pirate gets 51899 coconuts!" "one pirate gets 45419 coconuts!"
## [3] "one pirate gets 40019 coconuts!" "one pirate gets 35519 coconuts!"
## [5] "one pirate gets 31769 coconuts!" "one pirate gets 28644 coconuts!"
## [1] "for 7 pirates:"
## [1] "only 823537 needed!"
## [1] "one pirate gets 157638 coconuts!" "one pirate gets 140831 coconuts!"
## [3] "one pirate gets 126425 coconuts!" "one pirate gets 114077 coconuts!"
## [5] "one pirate gets 103493 coconuts!" "one pirate gets 94421 coconuts!" 
## [7] "one pirate gets 86645 coconuts!"