#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!"