Een hittegolf is een periode die gekenmerkt wordt door uitzonderlijk hoge temperaturen. Wanneer men precies van een hittegolf begint te spreken, hangt echter in sterke mate af van waar men zich op aarde bevindt. Het KMI (België) en het KNMI (Nederland) definiëren een hittegolf bijvoorbeeld als een periode van ten minste vijf opeenvolgende dagen met een maximumtemperatuur van 25 °C of meer (zomerse dagen), waarbinnen er ten minste drie dagen zijn met een maximumtemperatuur van 30 °C of meer (tropische dagen). Deze temperaturen worden op anderhalve meter boven het maaiveld gemeten in een zogenaamde weerhut.

hittegolf

In het dagelijks taalgebruik wordt de term hittegolf echter vaak in de mond genomen zonder dat het weer voldoet aan bovenstaande definitie. Hieronder staan twee fictieve voorbeelden van een echte hittegolf (links) en een warme periode die echter niet als hittegolf aangerekend wordt (rechts).

datum maximumtemperatuur
12 juli 24.7 °C
13 juli 25.1 °C
14 juli 28.9 °C
15 juli 31.0 °C
16 juli 28.6 °C
17 juli 30.6 °C
18 juli 32.4 °C
19 juli 23.0 °C
datum maximumtemperatuur
9 augustus 26.0 °C
10 augustus 24.1 °C
11 augustus 29.4 °C
12 augustus 32.8 °C
13 augustus 34.0 °C
14 augustus 25.5 °C
15 augustus 20.1 °C
16 augustus 19.0 °C

Opgave

Schrijf een bash shell script forecast dat een reeks floating point getallen inleest uit stdin. Deze getallen stellen de maximumtemperaturen voor die in een weerhut gemeten werden voor alle opeenvolgende dagen uit een bepaalde periode. Elk van de getallen staat op een afzonderlijke regel en de reeks wordt afgesloten door een regel die het woord stop bevat. Het script moet de tekst heatwave uitschrijven naar stdout en eindigen met exit status 0 als binnen de gegeven periode minstens één hittegolf werd waargenomen volgens de definitie van het KMI en het KNMI. Anders moet het script de tekst no heatwave uitschrijven naar stdout en eindigen met exit status 1.

Voorbeeld

In deze interactieve sessie gaan we ervan uit dat de huidige directory de tekstbestanden temperatures.01.txt en temperatures.02.txt bevat.

$ forecast < temperatures.01.txt
heatwave
$ echo $?
0
$ forecast < temperatures.02.txt
no heatwave
$ echo $?
1

Epiloog

Een uitbarsting van hete lucht trok afgelopen zondagavond van zuid naar noord door delen van New Ulm en Renville County. Het duurde maar een minuut of twee, maar de hitte was zo intens dat mensen uit hun huizen stormden en dachten dat ze in brand stonden.

— Minneapolis Tribune, 10 juli 1879