It was certainly a mix of emotions that I experienced when my then 13 year old daughter came by to talk about programming: a weird mix of pride, curiosity and — suspicion. Normally, she didn’t care at all about technical stuff and even less about what her father is doing for a living. So what the heck was she up to?
She told me about a cool “game” that she and her friends had been playing: calculating the match factor for two persons. Obviously, she wanted to try out many different person/person combinations and she had figured that this cried for some kind of automation.
I thought this was a nice opportunity to demonstrate that programming can be both: useful and fun, so we sat down and she explained how the algorithm worked.
1. Write down the names of the two persons, in capital letters, e. g.
1 2 3 |
H A R R Y S A L L Y |
2. Start at the first character, cross out all occurrences of this character and write down how many occurrences there are:
1 2 3 |
<del>H</del> A R R Y S A L L Y |
1 2 3 |
1 |
(since there is only one ‘H’)
3. Repeat this with the next character
1 2 3 |
<del>H A</del> R R Y S <del>A</del> L L Y |
1 2 3 |
1 2 |
(since there are two ‘A’s)
4. Repeat with the next (not yet crossed-out) character until all characters are crossed-out
1 2 3 |
1 2 2 2 1 2 |
(H:1, A:2, R:2, Y:2, S:1, L:2)
5. Now add up the number of occurrences. Add the first digit and the last digit and write down the sum; next the second and the last-but-one. Repeat until finished:
1 2 3 |
3 3 4 |
(1 + 2 = 3, 2 + 1 = 3, 2 + 2 = 4)
6. If the result (interpreted as a single value) is greater than 100, repeat step 5 until it is less or equal to 100.
1 2 3 |
7 3 |
(3 + 4 = 7, 3 + 0 = 3)
7. The result is the match value (73%) for the given two persons.
I implemented the first version in Perl but since I had so much fun, I decided to reimplement it in C++. Being that shell freak that I am I chose this user interface:
1 2 3 4 |
$ perfectmatch harry sally 73 |
OK, so now it is your turn. Implement this algorithm in a programming language of your liking.
You’ll get the same advice that I gave to my daughter then: Don’t be sad if you don’t get the results that you wish for. Even Romeo and Juliet have a match factor of only 56% and yet they are together in eternity.
Almost three years have past since that day and this was the only case where my daughter showed some interest in programming. This leads me to think that she found out — already at such an early age — that no computer will ever solve the really important problems of human beings.