Thomas Stedman Whitwell (1784-1840) was een Engelse architect die voornamelijk bekendheid verwierf met zijn ontwerp voor de seculiere utopische stadsontwikkeling van New Harmony, Indiana, VSA. Hij werkte hiervoor nauw samen met de sociale hervormer Robert Owen, maar hun plannen werden nooit gerealiseerd.
Tijdens zijn korte verblijf in New Harmony publiceerde de New Harmony Gazette in 1826 ook een voorstel van Stedman Whitwell om plaatsnamen te laten afhangen van hun ligging. Whitwell vond het immers onlogisch en verwarrend dat verschillende steden soms dezelfde naam droegen. In dit voorstel kreeg elke stad een unieke naam bestaande uit twee woorden, die van elkaar gescheiden worden door één enkele spatie. Het eerste woord correspondeert met de breedteligging van de stad, en het tweede woord met diens lengteligging. De breedte- en lengtegraad worden omgezet naar een woord door de karakters van de coördinaat van links naar rechts te doorlopen en elk cijfer om te zetten naar de letters die ermee corresponderen in onderstaande tabel.
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |
---|---|---|---|---|---|---|---|---|---|
a | e | i | o | u | y | ee | ei | ie | ou |
b | d | f | k | l | m | n | p | r | t |
Hierbij worden alternerend letters geselecteerd uit de eerste en tweede rij van de tabel. Dit garandeert dat de woorden achtereenvolgens bestaan uit klinkers en medeklinkers. Voor breedtegraden in het zuiden begint het corresponderende woord altijd met een S, en voor lengtegraden in het westen begint het woord altijd met een V. Voor breedtegraden in het noorden of lengtegraden in het oosten wordt er vooraan geen extra letter toegevoegd, en beginnen de woorden dus met een klinker.
Op die manier wordt New Harmony (VSA; 38°11'N, 87°55'W) bijvoorbeeld omgedoopt tot Ipab Veinul. Washington DC (VSA; 38°90'N, 77°04'W) wordt Ipiet Veenouk, Brussel (België; 50°85'N, 4°35'O) wordt Uteil Ofu, Kampala (Ugana; 0°32'N, 32°58'O) wordt Oufe Idup en Buenos Aires (Argentinië; 34°61'Z, 58°38'O) wordt Sikyb Upip. Ook al klinken deze namen niet bijzonder poëtisch, ze zijn zeker handig: als een reiziger bij een stad aankomt, dan kan hij op basis van diens naam onmiddellijk de ligging te weten komen. Spijtig genoeg sloeg het naamgevingsschema van Whitwell nooit aan — hierdoor telt de Verenigde Staten van Amerika op vandaag 28 Springfields, 29 Clintons en 30 Franklins.
Bepaal op basis van de ligging van een stad zijn naam volgens het schema van Thomas Stedman Whitwell. Hiervoor ga je als volgt te werk:
Schrijf een functie cijfer2letters waaraan een cijfer (int) moet doorgegeven worden. De functie moet de letters (str) teruggeven die corresponderen met het gegeven cijfer volgens de tabel die gebruikt wordt in het schema van Whitwell. Standaard worden de corresponderende letters op de eerste rij (klinkers) teruggegeven, maar als aan de tweede optionele parameter eerste van de functie de waarde False wordt doorgegeven, dan moet de functie de corresponderende letter op de tweede rij (een medeklinker) teruggeven. Probeer het aantal voorwaarden die moeten getest worden bij het uitvoeren van de functie tot een minimum te beperken.
Schrijf een functie coord2woord te schrijven waaraan een breedte- of lengtegraad moet doorgegeven worden. Deze coördinaat wordt doorgegeven als een string (str) van de vorm g°m'w. Hierbij stelt g een aantal graden voor, m een aantal minuten en w een windrichting: N voor het noorden, Z voor het zuiden, W voor het westen of O voor het oosten. De functie moet het woord (str) teruggeven dat correspondeert met de gegeven coördinaat volgens het schema van Whitwell. Dit woord moet beginnen met een hoofdletter, en bestaat voor de rest enkel uit kleine letters.
Schrijf een functie plaatsnaam te schrijven waaraan één of twee strings (str) moeten doorgegeven worden die de ligging van een stad aangeven. Als er twee strings aan de functie doorgegeven worden, dan stellen deze respectievelijk de breedte- en lengtegraad van de stad voor. Als er slechts één string aan de functie wordt doorgegeven, dan moet die string zowel de breedte- en lengtegraad van de stad bevatten, van elkaar gescheiden door een komma. Voor de omschrijving van breedte- en lengtegraden wordt opnieuw het formaat gebruikt zoals beschreven bij de functie coord2woord. Als de strings die aan de functie plaatsnaam doorgegeven worden witruimte (spaties, tabs, regeleindes) bevatten, dan moet die witruimte genegeerd worden. De functie moet de naam (str) van de stad teruggeven volgens het schema van Whitwell, op basis van de gegeven breedte- en lengteligging van de stad.
>>> cijfer2letters(3)
'i'
>>> cijfer2letters(7, False)
'n'
>>> cijfer2letters(0, eerste=False)
't'
>>> coord2woord("38°11'N")
'Ipab'
>>> coord2woord("87°55'W")
'Veinul'
>>> plaatsnaam("38°11'N", "87°55'W") # New Harmony
'Ipab Veinul'
>>> plaatsnaam("38°11'N, 87°55'W") # New Harmony
'Ipab Veinul'
>>> plaatsnaam("38°90'N", "77°04'W") # Washington DC (VSA)
'Ipiet Veenouk'
>>> plaatsnaam("50°85'N, 4°35'O") # Brussel (België)
'Uteil Ofu'
>>> plaatsnaam("0°32'N", "32°58'O") # Kampala (Uganda)
'Oufe Idup'
>>> plaatsnaam("34°61'Z, 58°38'O") # Buenos Aires (Argentinië)
'Sikyb Upip'