==> logic/children.s <==
First, determine all the ways that three ages can multiply together to get 72:
72 1 1 (quite a feat for the bartender)
36 2 1
24 3 1
18 4 1
18 2 2
12 6 1
12 3 2
9 4 2
9 8 1
8 3 3
6 6 2
6 4 3
As the man says, that's not enough information; there are many possibilities.
So the bartender tells him where to find the sum of the ages--the man now knows
the sum even though we don't. Yet he still insists that there isn't enough
info. This must mean that there are two permutations with the same sum;
otherwise the man could have easily deduced the ages.
The only pair of permutations with the same sum are 8 3 3 and 6 6 2, which both
add up to 14 (the bar's address). Now the bartender mentions his
"youngest"--telling us that there is one child who is younger than the other
two. This is impossible with 8 3 3--there are two 3 year olds. Therefore the
ages of the children are 6, 6, and 2.
Pedants have objected that the problem is insoluble because there could be
a youngest between two three year olds (even twins are not born exactly at
the same time). However, the word "age" is frequently used to denote the
number of years since birth. For example, I am the same age as my wife,
even though technically she is a few months older than I am. And using the
word "youngest" to mean "of lesser age" is also in keeping with common parlance.
So I think the solution is fine as stated.
In the sum-13 variant, the possibilities are:
11 1 1
10 2 1
9 3 1
9 2 2
8 4 1
8 3 2
7 5 1
7 4 2
7 3 3
6 6 1
6 5 2
6 4 3
The two that remain are 9 2 2 and 6 6 1 (both products equal 36). The
final bit of info (oldest child) indicates that there is only one
child with the highest age. This cancels out the 6 6 1 combination, leaving
the childern with ages of 9, 2, and 2.