Bu alıştırmada bir nükleer reaktörün kontrol sistemini geliştireceğiz.
Reaktörün güvenli çalışabilmesi için sıcaklık, nötron üretimi ve güç seviyesi sürekli kontrol edilmelidir. Göreviniz eksik bırakılan kodları tamamlayarak sistemin doğru çalışmasını sağlamaktır.
Çözümlere geçmeden önce her boşluğu kendiniz doldurmaya çalışın.
Soru 1: Reaktör Kritik Dengede mi?
Bir reaktörün güvenli bölgede çalışabilmesi için aşağıdaki üç koşulun aynı anda sağlanması gerekir:
- Sıcaklık 800 Kelvin’den düşük olmalıdır.
- Saniyede yayılan nötron sayısı 500’den büyük olmalıdır.
- Sıcaklık ile nötron sayısının çarpımı 500.000’den küçük olmalıdır.
Fonksiyondaki boşluğu doldurun:
def is_criticality_balanced( temperature, neutrons_emitted): return ____________________________
Örnek:
is_criticality_balanced(750, 600)
Beklenen sonuç:
True
Soru 2: Reaktör Verimliliği Hangi Renkte Gösterilmeli?
Verimlilik aşağıdaki formülle hesaplanır:
generated_power = voltage * current
Yüzde verim:
(generated_power / theoretical_max_power) * 100
Sonuç aşağıdaki renklerden biri olmalıdır:
| Verimlilik | Sonuç |
|---|---|
| %80 ve üzeri | green |
| %60 – %79.99 | orange |
| %30 – %59.99 | red |
| %30’dan düşük | black |
Eksik kodları tamamlayın:
def reactor_efficiency( voltage, current, theoretical_max_power): efficiency = ___________________ if efficiency >= ______: return "green" elif efficiency >= ______: return "orange" elif efficiency >= ______: return "red" else: return "black"
Soru 3: Reaktör Durumunu Belirleme
Reaktör için bir güvenlik eşiği (threshold) tanımlanmıştır.
Öncelikle şu değeri hesaplıyoruz:
temperature * neutrons_produced_per_second
Sonra aşağıdaki kuralları uyguluyoruz:
LOW
Eğer değer eşiğin %90’ından küçükse:
LOW
NORMAL
Eğer değer eşiğin %90 ile %110’u arasındaysa:
NORMAL
DANGER
Eğer değer eşiğin %110’unu aşarsa:
DANGER
Fonksiyondaki boşlukları doldurun:
def fail_safe( temperature, neutrons_produced_per_second, threshold): reactor_state = ______________________ if reactor_state < ______________________: return "LOW" elif ______________________ <= reactor_state <= ______________________: return "NORMAL" else: return "DANGER"
Örnek:
fail_safe(750, 600, 500000)
Çözümler
Çözüm 1
def is_criticality_balanced( temperature, neutrons_emitted): return ( temperature < 800 and neutrons_emitted > 500 and temperature * neutrons_emitted < 500000 )
Bu çözümde üç koşulun da aynı anda sağlanması gerektiği için and operatörü kullanılır.
Çözüm 2
def reactor_efficiency( voltage, current, theoretical_max_power): efficiency = ( voltage * current / theoretical_max_power ) * 100 if efficiency >= 80: return "green" elif efficiency >= 60: return "orange" elif efficiency >= 30: return "red" else: return "black"
Burada dikkat edilmesi gereken nokta yüzde değerin ondalıklı çıkabilmesidir. Bu nedenle karşılaştırmalar yukarıdan aşağıya yapılır.
Çözüm 3
def fail_safe( temperature, neutrons_produced_per_second, threshold): reactor_state = ( temperature * neutrons_produced_per_second ) if reactor_state < 0.90 * threshold: return "LOW" elif ( 0.90 * threshold <= reactor_state <= 1.10 * threshold ): return "NORMAL" else: return "DANGER"
Burada yüzde 10 tolerans aralığı kullanılır.
Örneğin:
- Threshold = 500000
- Alt sınır = 450000
- Üst sınır = 550000
Reaktör durumu bu aralıkta ise sistem NORMAL olarak kabul edilir.
Bu Alıştırmada Öğrenilen Python Konuları
Bu çalışma aşağıdaki Python kavramlarını öğretmektedir:
- Karşılaştırma operatörleri (
<,>,<=,>=) - Mantıksal operatörler (
and) - if / elif / else yapıları
- Yüzde hesaplamaları
- Aralık kontrolleri
- Fonksiyonlar
- Boolean değerler (
True,False)
Gerçek dünyadaki birçok kontrol sistemi benzer mantıklarla çalışır. Sensörlerden gelen değerler belirli eşiklerle karşılaştırılır ve sistem buna göre karar verir. Bu nedenle Meltdown Mitigation alıştırması, Python’da koşullu ifadeleri öğrenmek için oldukça faydalı bir uygulamadır.
Kaynak: https://exercism.org/tracks/python/exercises/meltdown-mitigation