From b015c68ef70dec27a415f0e22d3fda00382cc1bc Mon Sep 17 00:00:00 2001 From: "exercism-solutions-syncer[bot]" <211797793+exercism-solutions-syncer[bot]@users.noreply.github.com> Date: Wed, 29 Apr 2026 06:31:25 +0000 Subject: [PATCH] [Sync Iteration] python/meltdown-mitigation/1 --- .../meltdown-mitigation/1/conditionals.py | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 solutions/python/meltdown-mitigation/1/conditionals.py diff --git a/solutions/python/meltdown-mitigation/1/conditionals.py b/solutions/python/meltdown-mitigation/1/conditionals.py new file mode 100644 index 0000000..4a19931 --- /dev/null +++ b/solutions/python/meltdown-mitigation/1/conditionals.py @@ -0,0 +1,74 @@ +"""Functions to prevent a nuclear meltdown.""" + + +def is_criticality_balanced(temperature, neutrons_emitted): + """Verify criticality is balanced. + + :param temperature: int or float - temperature value in kelvin. + :param neutrons_emitted: int or float - number of neutrons emitted per second. + :return: bool - is criticality balanced? + + A reactor is said to be balanced in criticality if it satisfies the following conditions: + - The temperature is less than 800 K. + - The number of neutrons emitted per second is greater than 500. + - The product of temperature and neutrons emitted per second is less than 500000. + """ + + return temperature < 800 and neutrons_emitted > 500 and temperature * neutrons_emitted < 500000 + + +def reactor_efficiency(voltage, current, theoretical_max_power): + """Assess reactor efficiency zone. + + :param voltage: int or float - voltage value. + :param current: int or float - current value. + :param theoretical_max_power: int or float - power that corresponds to a 100% efficiency. + :return: str - one of ('green', 'orange', 'red', or 'black'). + + Efficiency can be grouped into 4 bands: + + 1. green -> efficiency of 80% or more, + 2. orange -> efficiency of less than 80% but at least 60%, + 3. red -> efficiency below 60%, but still 30% or more, + 4. black -> less than 30% efficient. + + The percentage value is calculated as + (generated power/ theoretical max power)*100 + where generated power = voltage * current + """ + + generated_power = voltage * current + percentage = (generated_power / theoretical_max_power) * 100 + + if percentage >= 80: + return "green" + elif percentage >= 60: + return "orange" + elif percentage >= 30: + return "red" + else: + return "black" + + + +def fail_safe(temperature, neutrons_produced_per_second, threshold): + """Assess and return status code for the reactor. + + :param temperature: int or float - value of the temperature in kelvin. + :param neutrons_produced_per_second: int or float - neutron flux. + :param threshold: int or float - threshold for category. + :return: str - one of ('LOW', 'NORMAL', 'DANGER'). + + 1. 'LOW' -> `temperature * neutrons per second` < 90% of `threshold` + 2. 'NORMAL' -> `temperature * neutrons per second` +/- 10% of `threshold` + 3. 'DANGER' -> `temperature * neutrons per second` is not in the above-stated ranges + """ + + reactor_value = temperature * neutrons_produced_per_second + + if reactor_value < 0.9 * threshold: + return "LOW" + elif 0.9 * threshold <= reactor_value <= 1.1 * threshold: + return "NORMAL" + else: + return "DANGER"