1 Have a list of people belonging to various countries:
European people: [Eric from France, Martine from France, John from Great-Britain, Martha from Great-Britain, Carine from France, Gerd from Deutschland, Giuseppe from Italia, Martha from Deutschland]
2 Get the different countries:
European countries: [Gerd from Deutschland, Eric from France, John from Great-Britain, Giuseppe from Italia]
3 List the people that belong to each country:
People from: [France]: [Carine from France, Eric from France, Martine from France]
People from: [Deutschland]: [Gerd from Deutschland, Martha from Deutschland]
People from: [Great-Britain]: [John from Great-Britain, Martha from Great-Britain]
People from: [Italia]: [Giuseppe from Italia]
Never use for while statements to perform these tasks but make heavy use of the SortedSet type. Find code here.
The trick is to use a compare function that return 0 when the guy's/lady's country does not match the country we are listing inhabitants for.
Read also the same exercize done differently in Java and Haskell:
- one using lambdaj java library.
- using haskell functional language.