In de Word Ways editie van augustus 20061 kwam James Mayfield met deze ingenieuze vergelijking op de proppen:

BEAR + RARE + ERE = RHYME

Het is een alfametische puzzel: een geldige wiskundige vergelijking waarin elk cijfer werd vervangen door een hoofdletter. Elke hoofdletter stelt een verschillend cijfer voor. Door welke cijfers moeten we de hoofdletters vervangen om deze vergelijking te laten opgaan?

Als A=5, B=7, E=9, H=0, M=8, R=1 en Y=3 dan krijgen we:

 7951 
 1519
+ 919
-----
10389

In zijn artikel geeft Mayfield nog 94 andere alfametische puzzels met een ingebouwde associatie tussen de woorden in het linkerlid en het woord in het rechterlid. Deze staat er bijvoorbeeld ook tussen:

BRUTUS + STABS = CAESAR

Hij heeft geen oplossingen voor de puzzels, maar je kan deze handige rekenmachine2 gebruiken als je vast zou zitten bij het oplossen ervan.

Opgave

Een woord (str) is een reeks hoofdletters waarin dezelfde letter meerdere keren mag voorkomen.

Een som van woorden (str) is een reeks woorden die van elkaar gescheiden worden door plustekens (+). Voor en na de plustekens staat er telkens één spatie.

De opgave (str) van een alfametische puzzel is een vergelijking met als linkerlid een som van twee of meer woorden en als rechterlid een woord. Voor en na het gelijkteken (=) staat er telkens één spatie.

Het alfabet (str) van een alfametische puzzel bestaat uit alle hoofdletters in de opgave van de puzzel. Daarin komt elke letter juist één keer voor en staan de letters in alfabetische volgorde.

Een oplossing (str) van een alfametische puzzel bestaat uit een reeks cijfers die allemaal verschillend zijn. Elk cijfer van de oplossing correspondeert met de letter op de overeenkomstige positie in het alfabet van de puzzel, waardoor het aantal cijfers in de oplossing dus gelijk moet zijn aan het aantal letters in het alfabet.

Gevraagd wordt:

Voorbeeld

>>> alfabet('BEAR + RARE + ERE = RHYME')
'ABEHMRY'
>>> alfabet('BRUTUS + STABS = CAESAR')
'ABCERSTU'

>>> getal('BEAR', 'ABEHMRY', '5790813')
7951
>>> getal('RARE', 'ABEHMRY', '5790813')
1519
>>> getal('ERE', 'ABEHMRY', '5790813')
919
>>> getal('RHYME', 'ABEHMRY', '5790813')
10389

>>> getallen('BEAR + RARE + ERE', 'ABEHMRY', '5790813')
(7951, 1519, 919)
>>> getallen('BRUTUS + STABS', 'ABCERSTU', '75638921')
(581219, 92759)

>>> woord(7951, 'ABEHMRY', '5790813')
'BEAR'
>>> woord(1519, 'ABEHMRY', '5790813')
'RARE'
>>> woord(919, 'ABEHMRY', '5790813')
'ERE'
>>> woord(10389, 'ABEHMRY', '5790813')
'RHYME'

>>> uitkomst('BEAR + RARE + ERE', 'ABEHMRY', '5790813')
'RHYME'
>>> uitkomst('BRUTUS + STABS', 'ABCERSTU', '75638921')
'CAESAR'

>>> isoplossing('5790813', 'BEAR + RARE + ERE = RHYME')
True
>>> isoplossing('75638921', 'BRUTUS + STABS = TIBERIUS')
False

Bronnen