Jun 1, 2014, 1:08 PM
# Problem 4: GENEROUS GIFTS (536 Puzzles and Curious Problems, Henry Ernest, Dudeney)
# A generous man set aside a certain sum of money for
# equal distribution weekly to the needy of his acquaintance.
# One day he remarked, "If there are five fewer applicants next week,
# you will each receive two dollars more." Unfortunately, instead of
# there being fewer there were actually four more persons applying for the gift.
# "This means," he pointed out, "that you will each receive one dollar less."
# How much did each person receive at that last distribution?
fewer.applicants= function(initial.applicants) return(initial.applicants - 5)
more.applicants= function(initial.applicants) return(initial.applicants + 4)
recieved.money= function(money, applicants) return(money/applicants)
recieved.money.initial.applicants= function() recieved.money(sum.of.money, initial.applicants)
recieved.money.fewer.applicants= function() recieved.money(sum.of.money, fewer.applicants(initial.applicants))
more.recieved.money.fewer.applicants= function() recieved.money.fewer.applicants()-recieved.money.initial.applicants()
recieved.money.more.applicants= function() recieved.money(sum.of.money, more.applicants(initial.applicants))
less.recieved.money.more.applicants= function() recieved.money.initial.applicants()-recieved.money.more.applicants()
check= function() return((more.recieved.money.fewer.applicants()==2 & less.recieved.money.more.applicants()==1))
for (initial.applicants in 5:100) {
for (sum.of.money in 1:200) {
if(check()) {
print(paste("Sum of money:", sum.of.money))
print(paste("Initial applicants:", initial.applicants))
print(paste("Reciecved money for initial applicants:", recieved.money.initial.applicants()))
print("")
print(paste("Fewer applicants:", fewer.applicants(initial.applicants)))
print(paste("Reciecved money for fewer applicants:", recieved.money.fewer.applicants()))
print(paste("More money for fewer applicants:", more.recieved.money.fewer.applicants()))
print("")
print(paste("More applicants:", more.applicants(initial.applicants)))
print(paste("Reciecved money for more applicants:", recieved.money.more.applicants()))
print(paste("Less money for more applicants:", less.recieved.money.more.applicants()))
}
}
}
[1] "Sum of money: 120"
[1] "Initial applicants: 20"
[1] "Reciecved money for initial applicants: 6"
[1] ""
[1] "Fewer applicants: 15"
[1] "Reciecved money for fewer applicants: 8"
[1] "More money for fewer applicants: 2"
[1] ""
[1] "More applicants: 24"
[1] "Reciecved money for more applicants: 5"
[1] "Less money for more applicants: 1"