Ana sayfa - Makale - Ayrıntılar

Python'da su sürahisi problemine nasıl çözüm geliştirilir?

David Johnson
David Johnson
David, Termos Kupası bölümünde üretim süpervizörü olarak çalışıyor. Profesyonel üretim ekibine liderlik ederek, şirketin katı kalite kontrol süreci ve olgun tedarik zinciri sistemi sayesinde her Thermos Cup'ın yüksek kalite standartlarıyla üretilmesini sağlıyor.

Su testisi problemi, belirli bir miktarda suyu ölçmek için farklı kapasitelerdeki iki sürahinin kullanılmasını içeren klasik bir bilmecedir. Bir su sürahisi tedarikçisi olarak, bu tür sorunların pratik uygulamaları ve çözümleri ile ilgilenen müşterilerle sıklıkla karşılaşıyorum. Bu blogda, Python'da su sürahisi sorununa yönelik bir çözümün uygulanmasında size rehberlik edeceğim; bu, yalnızca programlama becerilerinizi geliştirmekle kalmayacak, aynı zamanda sürahi işlemlerinin ardındaki ilkeleri anlamanıza da yardımcı olacaktır.

Su Sürahisi Problemini Anlamak

Su sürahisi problemi tipik olarak (x) ve (y) litre kapasiteli iki sürahiyi içerir ve amaç bu iki sürahiyi kullanarak (z) litre suyu ölçmektir. Aşağıdaki işlemleri gerçekleştirebilirsiniz:

  1. Bir sürahiyi doldur: Sürahiyi maksimum kapasitesine kadar doldurun.
  2. Bir sürahiyi boşalt: Sürahideki suyun tamamını boşaltın.
  3. Bir sürahiden diğerine su dökün: Bir sürahiden diğerine, alıcı sürahi dolana veya dökme sürahisi boşalana kadar su dökün.

Python Uygulaması

Her işlemi temsil edecek bir fonksiyon tanımlayarak başlayalım. İki sürahinin durumunu temsil etmek için bir demet kullanacağız; burada birinci öğe, birinci sürahideki su miktarıdır ve ikinci öğe, ikinci sürahideki su miktarıdır.

def fill(sürahi, kapasite): dönüş kapasitesi def boş(sürahi): dönüş 0 def pour(from_jug, to_jug, to_capacity): toplam = from_jug + to_jug if total <= to_capacity: return 0, toplam else: dönüş toplamı - to_capacity, to_capacity

Daha sonra, çözümü bulmak için geniş kapsamlı arama (BFS) algoritmasını kullanacağız. BFS bu problem için uygun bir algoritmadır çünkü çözüme giden en kısa yolu bulmayı garanti eder.

Outdoor Stainless Steel Ice JugOutdoor Stainless Steel Ice Jug suppliers

koleksiyonlardan içe aktar deque def water_jug_problem(x, y, z): kuyruk = deque([(0, 0)]) ziyaret edildi = set([(0, 0)]) yol = {} while kuyruk: current_state = kuyruk.popleft() jug1, jug2 = current_state if jug1 == z veya jug2 == z: çözüm = [] while current_state in path: Solution.append(current_state) current_state = yol[geçerli_durum] çözüm.append((0, 0)) çözüm.reverse() dönüş çözümü # Sürahi 1'i doldurun yeni_durum = (doldur(sürahi1, x), sürahi2) eğer yeni_durum ziyaret edilmemişse: ziyaret edildi.add(yeni_durum) yol[yeni_durum] = geçerli_durum kuyruğu.append(yeni_durum) # Sürahi 2'yi doldurun yeni_durum = (sürahi1, doldur(sürahi2, y)) eğer yeni_durum ziyaret edilmemişse: ziyaret edilen.add(yeni_durum) yol[yeni_durum] = mevcut_durum kuyruğu.append(yeni_durum) # Boş sürahi 1 yeni_durum = (boş(sürahi1), sürahi2) eğer yeni_durum ziyaret edilmediyse: ziyaret edildi.add(yeni_durum) yol[yeni_durum] = mevcut_durum kuyruğu.append(yeni_durum) # Boş sürahi 2 yeni_durum = (sürahi1, boş(jug2)) eğer yeni_durum ziyaret edilmediyse: ziyaret edilen.add(yeni_durum) yol[yeni_durum] = geçerli_durum kuyruğu.append(yeni_durum) # Sürahi 1'den sürahi 2'ye dökün yeni_sürahi1, yeni_jug2 = dökün(sürahi1, sürahi2, y) yeni_durum = (yeni_sürahi1, yeni_sürahi2) eğer yeni_durum ziyarette değilse: ziyaret edilen.add(yeni_durum) yol[yeni_durum] = geçerli_durum kuyruğu.append(yeni_durum) # Sürahi 2'den sürahi 1'e dökün new_jug2, new_jug1 = pour(jug2, jug1, x) new_state = (new_jug1, new_jug2) eğer yeni_durum ziyaret edilmemişse: ziyaret edilen.add(yeni_durum) yol[yeni_durum] = mevcut_durum kuyruğu.append(yeni_durum) return Yok

Çözümün Test Edilmesi

Bir örnekle fonksiyonumuzu test edelim. Diyelim ki 3 litrelik ve 5 litrelik bir sürahimiz var ve 4 litre suyu ölçmek istiyoruz.

x = 3 y = 5 z = 4 çözüm = su_jug_problem(x, y, z) if çözüm: print("Çözüm bulundu:") çözümdeki durum için: print(f"Sürahi 1: {durum[0]} litre, Sürahi 2: {durum[1]} litre") else: print("Çözüm bulunamadı.")

Pratik Uygulamalar ve Su Sürahilerimiz

Su testisi problemi sadece teorik bir bilmece değildir. Sıvıların hassas ölçümlerinin gerekli olduğu kimya gibi çeşitli alanlarda pratik uygulamaları vardır. Bir su sürahisi tedarikçisi olarak geniş bir yelpazede yüksek kaliteli su sürahileri sunuyoruz.Dış Mekan Paslanmaz Çelik Buz Sürahisi. Bu sürahiler, suyunuzu uzun süre soğuk tutabilen dayanıklı paslanmaz çelikten yapılmıştır ve bu da onları açık hava etkinlikleri için mükemmel kılar.

Çözüm

Sonuç olarak, Python'da su sürahisi problemine çözüm uygulamak ilginç ve eğitici bir alıştırmadır. Yalnızca problem çözme sürecini anlamanıza yardımcı olmakla kalmaz, aynı zamanda programlama becerilerinizi de geliştirir. Pratik ihtiyaçlarınız için yüksek kaliteli su sürahileri satın almakla ilgileniyorsanız, satın alma ve pazarlık için bizimle iletişime geçmekten çekinmeyin. Size en iyi ürün ve hizmetleri sunmaya kararlıyız.

Referanslar

  • Cormen, TH, Leiserson, CE, Rivest, RL ve Stein, C. (2009). Algoritmalara Giriş (3. baskı). İLE Basın.
  • Knuth, DE (1997). Bilgisayar Programlama Sanatı, Cilt 1: Temel Algoritmalar (3. baskı). Addison-Wesley.

Soruşturma göndermek

Popüler Blog Yazıları