In het noordwesten van de Amerikaanse staat Texas ligt het stadje Dalhart. Austin, de hoofdstad Texas, is verder van dit stadje verwijderd dan de hoofdsteden van zes andere Amerikaanse staten. In vogelvlucht ligt Dalhart 306 kilometer van Santa Fe, 432 kilometer van Denver, 464 kilometer van Oklahoma City, 606 kilometer van Cheyenne, 684 kilometer van Topeka en 738 kilometer van Lincoln, terwijl het 786 kilometer verwijderd is van Austin.

buren Dalhart
In vogelvlucht ligt Dalhart 306 kilometer van Santa Fe, 432 kilometer van Denver, 464 kilometer van Oklahoma City, 606 kilometer van Cheyenne, 684 kilometer van Topeka en 738 kilometer van Lincoln, terwijl het 786 kilometer verwijderd is van Austin, de hoofstad van zijn eigen staat Texas.

Opgave

De Verenigde Staten bestaan uit vijftig staten die elk een eigen hoofdstad hebben. Omdat verschillende Amerikaanse steden dezelfde naam hebben, worden plaatsnamen doorgaans aangeduid samen met de staat waarin ze liggen. In deze opgave zullen we steden steeds aanduiden met de naam van de stad, gevolgd door een komma en de twee-letter afkorting van de staat waarin de stad ligt (bijvoorbeeld Austin,TX).

Omdat er zelfs dubbele plaatsnamen voorkomen binnen dezelfde staat, is het nog eenduidiger om plaatsen aan te duiden met hun ligging. Daarom stellen we de coördinaten van een stad voor als een tuple $$(b, l)$$ ($$b, l \in \mathbb{R}, -90 < b \leq 90, -180 < l \leq 180$$), waarbij $$b$$ (int) de breedtegraad en $$l$$ (int) de lengtegraad aanduidt (beide uitgedrukt in decimale graden).

Voor een gegeven stad gaan we op zoek naar alle hoofdsteden van Amerikaanse staten die dichter bij de stad liggen dan de hoofstad van zijn eigen staat. Hiervoor gaan we als volgt te werk:

Voorbeeld

Bij onderstaande voorbeeldsessie gaan we ervan uit dat de tekstbestanden hoofdsteden.txt1 en steden.txt2 zich in de huidige directory bevinden.

>>> hoofdstad = hoofdsteden('hoofdsteden.txt3')
>>> hoofdstad['TX']
'Austin'
>>> hoofdstad['NE']
'Lincoln'

>>> coordinaat = coordinaten('steden.txt4')
>>> coordinaat['Dalhart,TX']
(36.1173, -102.6024)
>>> coordinaat['Austin,TX']
(30.352, -97.7151)
>>> coordinaat['Lincoln,NE']
(40.908, -96.7103)

>>> grootcirkelafstand((36.1173, -102.6024), (30.352, -97.7151)) # Dalhart,TX <-> Austin,TX
785.5925593169209
>>> grootcirkelafstand((36.1173, -102.6024), (40.908, -96.7103)) # Dalhart,TX <-> Lincoln,NE
738.9516485722722

>>> dichte_buren('Dalhart,TX', hoofdstad, coordinaat)
{'Cheyenne,WY', 'Oklahoma City,OK', 'Topeka,KS', 'Santa Fe,NM', 'Lincoln,NE', 'Denver,CO'}

Epiloog

Het stadje Green River in de staat Wyoming is zeker een goede buur gebleken. Toen NASA in 1994 ontdekte dat Jupiter bedreigd werd door een mogelijk inslag van zes meteoren, besliste de gemeenteraad van Green River om de landingsbaan ten zuiden van de stad beschikbaar te stellen en doopte die meteen ook om tot Greater Green River Intergalactic Spaceport. Ze vroegen NASA om dit nieuws uit te sturen naar alle Jovianen op de vlucht en drongen er bij hun inwoners op aan om

… zich voor te bereiden om mogelijke vluchtelingen te verwelkomen die een beroep zouden willen doen op onze barmhartigheid
Green River Intergalactic Spaceport
De Greater Green River Intergalactic Spaceport, nabij Green River in de staat Wyoming.

Burgemeester George Eckman vertelde aan de krant de Rock Springs Rocket-Miner

Ik zie het als een gebaar dat kon en moest gemaakt worden door iemand op planeet Aarde aan de medeburgers van ons zonnestelsel.

De twee gemeenteraadsleden die zich tegen de resolutie verzet hadden, argumenteerden dat de regio reeds voldoende problemen had met illegale vreemdelingen en wezen ook op de lokale woningnood. Tot op vandaag heeft geen enkel ruimteschip gebruikgemaakt van de luchthaven, maar het aanbod blijft wel gelden.