Oyunlarda Kazanma ve Kaybetme Durumları
En iyi hamleyle kimin kazanacağını düşünün.
Oyunlarda Kazanma ve Kaybetme Durumları, CoddyKit'te ücretsiz bir Competitive Programming Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Competitive Programming Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Competitive Programming Academy kursu toplamda 4 dersten oluşur.
İki oyuncu, kusursuz oyun
Kombinatoryal bir oyunda iki oyuncu sırayla hamle yapar, ikisi de kusursuz oynar ve hamle yapamayan oyuncu kaybeder. Sizin göreviniz yalnızca kazananı tahmin etmektir. 🎯
Her konumun bir etiketi vardır
Her oyun konumu bir durumdur. Tüm göreviniz, her durumu sıradaki oyuncu açısından ya kazanma ya da kaybetme durumu olarak etiketlemektir.
Kazandıran durum ne demektir
Bir durum, sıradaki oyuncunun rakibi kaybettiren bir duruma götüren en az bir hamlesi varsa kazandıran durumdur.
Kaybettiren durum ne demektir
Bir durum, yaptığınız her hamle rakibe kazandıran bir durum verdiğinde kaybettiren durumdur. Ne yaparsanız yapın sıkışıp kalırsınız.
Temel durum
Hiç hamle yapamadığınız konum temel durumdur. Bu konumla karşılaşan oyuncu zaten kaybetmiştir; dolayısıyla bu durumu kayıp olarak etiketleyin.
En alttan başlayarak oluşturun
Temel durumlardan başlayıp dışa doğru ilerleyin. Her yeni durumun etiketi yalnızca hamlelerinin götürdüğü durumlara bağlıdır.
Tek bir iyi hamle yeterlidir
Kazanmak için rakibi kaybettiren bir duruma giden tek bir hamle bulmanız yeterlidir. Herhangi bir kaçış yolu bulmak yeterlidir.
Küçük bir örnek
Bir yığından 1 veya 2 taş alın; son taşı alan kazanır. 0 taş varken sıradaki oyuncu kaybeder, dolayısıyla bu bir kaybettiren durumdur.
Kazanma kontrolünü kodlayın
Bu özyineleme, her hamleyi deneyip sonuç üzerinde özyinelemeli olarak çalışarak bir durumu etiketler. ⚙️
def win(n):
if n == 0:
return False
return any(not win(n - k) for k in (1, 2))Hızlı kalmak için önbelleğe alın
Durumlar farklı dallarda tekrar eder; bu nedenle her sonucu önbelleğe alın. Basit bir önbellek, üstel işi doğrusal zamana dönüştürür.
from functools import lru_cache
@lru_cache(None)
def win(n):
return n != 0 and any(not win(n - k) for k in (1, 2))Simetri bir kısayoldur
Bir konum tamamen simetrikse, ikinci oyuncu çoğu zaman hamleleri taklit ederek kazanabilir. Bu taklit etme yöntemine dikkat edin.
Hızlı kontrol
Bir durumla karşı karşıyasınız. Bu durum sizin için ne zaman kaybettiren bir durumdur?
Özet
Artık durumları etiketleyebilirsiniz: bir win durumunda rakibin kaybına götüren bir hamle vardır, kaybettiren durumda ise hiç yoktur. Temel durumlardan başlayın ve önbelleğe alın. 🧠
Sıkça Sorulan Sorular
“Oyunlarda Kazanma ve Kaybetme Durumları” dersi ücretsiz mi?
Evet — “Oyunlarda Kazanma ve Kaybetme Durumları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Competitive Programming Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Competitive Programming Academy kursu toplamda 4 dersten oluşur.
“Oyunlarda Kazanma ve Kaybetme Durumları” dersinde ne öğreneceğim?
En iyi hamleyle kimin kazanacağını düşünün. Competitive Programming Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Competitive Programming Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Competitive Programming Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Oyunlarda Kazanma ve Kaybetme Durumları” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Competitive Programming Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Competitive Programming Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Oyunlarda Kazanma ve Kaybetme Durumları
- Nim ve Grundy Sayısı
- Ortada Buluşma
- Hızlı Hata Ayıklama: Stres Testleri ve Triage