PROG0153 - Noise-induced hearing loss

no tags 

Noise-induced hearing loss is an insidious threat where loss of hearing occurs in the cochlea, for it contains hair cells that can be damaged by excessive sound levels . Both the severity and the moment it occurs depend on the intensity and the duration of noise. A rule of thumb that is used by audiologists, says that one may work a maximum of 8 hours a day in an environment of 80 dB to avoid the risk of noise-induced hearing loss. For every three decibels that is added onto the initial 80, one needs to halve the duration of exposure. Recently, a sound level up to 118 dB was measured in some movie theaters. According to the rule of thumb, one risks permanent damage after an exposure of more than 7 seconds to this environment. Long lasting exposure to an environment of less than 80 dB normally doesn't result in any hearing loss.

Assignment

Write a function maximum_exposure to which a real value should be passed as an argument. This value represents a sound level in decibel. The function should print the duration of exposure (a real number that expresses an amount of seconds) that is recommended for the sound level given. Use the rule of thumb. Basically, the function should print the value -1 if the given sound level is less than 80 dB (this value corresponds with an unlimited exposure). For a given sound within the interval $[80,83[$ dB the function should print a value that corresponds with a duration of 8 hours. For every following interval of 3 dB, this duration should be halved ($[83,86[\ \rightarrow$ 4 hours, $[86,89[\ \rightarrow$ 2 hours, $[89,92[\ \rightarrow$ 1 hour, …).

Example

>>> maximum_exposure(40)
-1.0
>>> maximum_exposure(60)
-1.0
>>> maximum_exposure(75)
-1.0
>>> maximum_exposure(80)
28800.0
>>> maximum_exposure(86)
7200.0
>>> maximum_exposure(90)
3600.0
>>> maximum_exposure(95)
900.0
>>> maximum_exposure(97)
900.0
>>> maximum_exposure(105)
112.5
>>> maximum_exposure(107)
56.25
>>> maximum_exposure(118)
7.03125
>>> maximum_exposure(115)
14.0625
>>> maximum_exposure(120)
3.515625

Lawaaidoofheid is een sluipend gevaar, waarbij slijtage van het gehoor optreedt in het slakkenhuis. Daar zitten immers haarcellen die door overbelasting beschadigd kunnen raken. Wanneer de beschadiging optreedt en hoe ernstig die uitvalt, is afhankelijk van de intensiteit en de duur van het lawaai. Een vuistregel die door audiologen gebruikt wordt, zegt dat men maximaal 8 uur per dag in een omgeving van 80 dB mag werken om risico op lawaaidoofheid te vermijden. Voor elke drie decibel die daarbij komt moet je de blootstellingstijd halveren. Onlangs werd in sommige bioscopen een geluidsniveau tot 118 dB gemeten, waardoor je volgens bovenstaande regel in een dergelijke omgeving reeds na 7 seconden kans loopt om blijvende gehoorschade op te lopen. Langdurige blootstelling aan een omgeving van minder dan 80 dB levert normaalgezien geen risico op gehoorschade op.

Opgave

Schrijf een functie maximale_blootstelling waaraan een reële waarde als argument moet doorgegeven worden. Deze waarde stelt een geluidsniveau in decibel voor. De functie moet de tijdsduur (een reëel getal dat een aantal seconden uitdrukt) teruggeven waarin men maximaal aan dit geluidsniveau mag blootgesteld worden, voordat men risico loopt op blijvende gehoorschade. Hiervoor moet de hierboven beschreven vuistregel gebruikt worden. Concreet moet de functie de waarde -1 teruggeven indien het gegeven geluidsniveau minder dan 80 dB bedraagt (deze waarde correspondeert met een onbeperkte tijdsduur). Voor een gegeven geluidsniveau binnen het interval $[80,83[$ dB moet de functie een waarde teruggeven die correspondeert met een tijdsduur van 8 uur. Voor elk volgend geluidsinterval van 3 dB moet deze tijdsduur telkens gehalveerd worden ($[83,86[\ \rightarrow$ 4 uur, $[86,89[\ \rightarrow$ 2 uur, $[89,92[\ \rightarrow$ 1 uur, …).

Voorbeeld

>>> maximale_blootstelling(40)
-1.0
>>> maximale_blootstelling(60)
-1.0
>>> maximale_blootstelling(75)
-1.0
>>> maximale_blootstelling(80)
28800.0
>>> maximale_blootstelling(86)
7200.0
>>> maximale_blootstelling(90)
3600.0
>>> maximale_blootstelling(95)
900.0
>>> maximale_blootstelling(97)
900.0
>>> maximale_blootstelling(105)
112.5
>>> maximale_blootstelling(107)
56.25
>>> maximale_blootstelling(118)
7.03125
>>> maximale_blootstelling(115)
14.0625
>>> maximale_blootstelling(120)
3.515625


Added by:Peter Dawyndt
Date:2011-08-28
Time limit:10s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Languages:PY_NBC
Resource:None