In 1817 kreeg de Fransman Jean-François Sudre1 (15 August 1787 – 3 October 1862) het volgende idee: als mensen van verschillende culturen kunnen genieten van dezelfde muziek, waarom zouden we dan geen muziek kunnen gebruiken om er een universele taal mee te ontwikkelen? De kunsttaal die hieruit ontstond — en die hij Solresol doopte — genoot enige tijd een grote populariteit, en breikte haar hoogtepunt in 1902 met de publicatie van Boleslas Gajewski's Grammaire du Solrésol.

Solresol is een muziektaal die gebaseerd is op het principe van solfège2 (de kunst van het ten opzichte van elkaar identificeren van muzikale tonen), en kan zowel worden gesproken en geschreven als gefloten, gezongen, gespeeld of anderszins uitgebeeld. De taal kent slechts zeven lettergrepen die overeenkomen met de zeven noten van de diatonische toonladder: do, re, mi, fa, sol, la, si. Met deze noten werd dan een vocabularium samengesteld dat bestond uit 2600 stamwoorden.

solresol
De zeven conventionele noten, kleuren, lettergrepen, cijfers en symbolen die gebruikt worden bij de voorstelling van de lettergrepen van Solresol.

Evenals in filosofische talen zijn de solresolwoorden ingedeeld in semantische categorieën, die corresponderen met de eerste lettergreep. Zo hebben woorden die met sol beginnen betrekking op kunsten en wetenschappen. Woorden die beginnen met solsol hebben betrekking op ziekte en medicijnen. Solresol zelf betekent taal, en solsolredo betekent migraine. Woorden die met elkaar in verband staan, delen dus dezelfde beginlettergrepen. Zo betekent doremi bijvoorbeeld dag, dorefa betekent week, doresol betekent maand, en doredo staat voor het begrip tijd zelf.

Een bijzondere eigenschap van Solresol is dat de betekenis van een woord kan omgekeerd worden door de lettergrepen om te draaien. Zo betekent fala goed of lekker, en lafa slecht of vies. Andere eigenschappen zijn dat de taal heel eenvoudig te leren en uit te spreken is door analfabeten, en over een eenvoudig maar effectief systeem beschikt dat het mogelijk maakt de functie van een woord binnen een zin te bepalen.

Ondanks aanvankelijk succes moest Solresol het uiteindelijk afleggen tegen succesvollere talen zoals Esperanto3. Desondanks is er nog steeds een kleine schare trouwe aanhangers, die voornamelijk via het Internet met elkaar te communiceren. In Steven Spielbergs film Close Encounters of the Third Kind4 werd Solresol bijvoorbeeld gebruikt door de aliens om contact te leggen met de mensheid.

Voorbereiding

Bekijk de video over test-driven development5 om te leren werken met doctests. Hierdoor zal je de laatste twee statements begrijpen in het skelet van de broncode dat wordt meegegeven met deze opgave.

Opgave

We hebben hieronder reeds het skelet opgemaakt voor de oplossing van deze opgave.

def isSolresol(woord):

    """
    Geeft een Booleaanse waarde terug die aangeeft of het gegeven woord al dan
    niet voldoet aan de grammaticaregels van Solresol.
    
    >>> isSolresol('doresol')
    True
    >>> isSolresol('doreso')
    False
    >>> isSolresol('salami')
    False
    """

def afkorting(woord):

    """
    Geeft de verkorte versie terug van het gegeven solresolwoord.
    
    >>> afkorting('fala')
    'fl'
    >>> afkorting('doremi')
    'drm'
    >>> afkorting('doresol')
    'drso'
    """

def antoniem(woord):

    """
    Geeft het antoniem terug van het gegeven solresolwoord.
    
    >>> antoniem('fala')
    'lafa'
    >>> antoniem('doremi')
    'miredo'
    >>> antoniem('doresol')
    'solredo'
    """

if __name__ == '__main__':
    import doctest
    print(doctest.testmod())

Je taak bestaat erin om de drie functies uit dit codefragment te implementeren, zodat ze voldoen aan de volgende beschrijvingen.

Je mag er van uitgaan dat aan de functies afkorting en antoniem woorden doorgegeven worden die voldoen aan de grammaticalregels van Solresol, zoals aangegeven bij de omschrijving van de functie isSolresol.

Voorbeeld

>>> isSolresol('doresol')
True
>>> isSolresol('doreso')
False
>>> isSolresol('salami')
False

>>> afkorting('fala')
'fl'
>>> afkorting('doremi')
'drm'
>>> afkorting('doresol')
'drso'

>>> antoniem('fala')
'lafa'
>>> antoniem('doremi')
'miredo'
>>> antoniem('doresol')
'solredo'