Arka fon
In Nim oyununun her turda, bir oyuncu, bir gelen bir ve bütün taşlar arasında kaldırmak gerekir: oyuncular "kazıkların" dan "taş" çıkarmadan dönüşümlü tek kazık. Nim'in amacı son taşı almak veya yanlış varyantta rakibinizi bunu yapmaya zorlamaktır - ancak stratejilerin neredeyse aynı olduğu ortaya çıkıyor.
Nim eğlenceli bir bar oyunu yapar. "Taşlar" için kibrit çubukları veya madeni paralar kullanabilirsiniz ve "kazıklar" genellikle bir çizgi halinde düzenlenmiştir. Aşağıda 1, 3, 5 ve 7 yığınlarıyla klasik bir kurulum var:
Daha önce hiç Nim oynamadıysanız, bu mücadeleyi denemeden önce elinizi deneyebilirsiniz. İşte "Domuzdan Önce İnciler" adlı bir versiyon .
strateji
Nim'deki en uygun strateji, sıradan insanların çoğunun bir uzmana sürekli olarak kaybetmesi, ancak ikili aritmetik ile tanımlanması basittir .
Bununla birlikte, zihinsel ikili XOR operasyonları yapmak zordur, bu yüzden neyse ki, sarhoş olsa bile, gerçek zamanlı olarak uygulanması daha kolay olan doğru stratejiyi görselleştirmenin eşdeğer bir yolu vardır.
Sadece üç adım vardır:
- Zihinsel olarak, her bir satırdaki "taşları", boyutları mümkün olan en büyük boyuttan başlayarak 2 gücü olan alt gruplara ayırın: 8, 4, 2 ve 1 çoğu oyun için yeterlidir.
- Her grubu başka bir satırdaki bir ikizle eşleştirmeye çalışın, böylece her grubun bir çifti olur.
- Bu mümkün değilse, eşleştirilmemiş "taşları" tek bir satırdan kaldırın (bu her zaman mümkün olacaktır - neden için Wikipedia bağlantısına bakın), böylece 2. adım mümkün olur.
Ya da başka bir yol: "Kazıkları 2'lik güçlere gruplandırırsanız, tüm gruplar başka bir yığındaki bir grupla eşleştirilebilecek şekilde, tek bir kazıktan bazı taşları çıkarın." 2'den büyük güçleri daha küçük güçlere ayıramayacağınız uyarı ile - örneğin, 8 taşlı bir çizgiyi 4'lü iki gruba ayıramazsınız.
Örneğin, yukarıdaki tabloyu nasıl görselleştireceğiniz aşağıda açıklanmıştır:
Bu tahta mükemmel dengelidir, bu yüzden önce rakibinizin hareket etmesini istersiniz.
Meydan okuma
Nim "yığınlarının" boyutunu temsil eden pozitif tamsayıların bir listesi göz önüne alındığında, bir uzman tarafından görüldüğü gibi Nim panosunun düz metin görselleştirmesini döndürün.
Geçerli bir görselleştirmeyi neyin oluşturduğu en iyi örnekle açıklanmaktadır, ancak şunları yapmanız gerekir:
- Her "2'nin gücü alt grubuna" ve çiftine (eşleştirilmemiş alt gruplar uygun değildir) ayrı bir karakter atayın ve bu karakteri hem alt grupta hem de çiftte "taşları" temsil etmek için kullanın.
- Herhangi eşleşmemiş "taş" Temsil (yani normal oynarken bir uzman ortadan kaldıracaktır olanlar - değil misere - Nim) tire kullanarak:
-
.
Geçerli bir görselleştirme elde etmenin birden çok yolu olacaktır ve hepsi geçerlidir. Bazı test senaryoları üzerinde çalışalım:
Test Durumları
Giriş: 1, 3, 5, 7
Olası Çıktı 1:
A
BBA
CCCCD
CCCCBBD
İsteğe bağlı olarak karakterler arasında boşlukların yanı sıra satırlar arasında boş satırlar ekleyebilirsiniz:
Olası Çıktı 2:
A
B B A
C C C C D
C C C C B B D
Giriş: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Karakterlerin sırası ve seçimi istediğiniz gibi olabilir:
Olası Çıktı 1:
G
E E
E E G
C C C C
C C C C F
B B B B D D
B B B B D D F
H H I - - - - -
A A A A A A A A I
A A A A A A A A H H
Unicode sembolleri de uygundur:
Olası Çıktı 2:
◎
◈ ◈
◈ ◈ ◎
△ △ △ △
△ △ △ △ ◉
◐ ◐ ◐ ◐ ◀ ◀
◐ ◐ ◐ ◐ ◀ ◀ ◉
▽ ▽ ◒ - - - - -
▥ ▥ ▥ ▥ ▥ ▥ ▥ ▥ ◒
▥ ▥ ▥ ▥ ▥ ▥ ▥ ▥ ▽ ▽
Giriş: 7
Kurallardan, herhangi bir "tek yığın" ın tamamen kaldırılması gerektiği izlenir.
Olası Çıktı 1:
-------
Olası Çıktı 2:
- - - - - - -
Giriş: 5, 5
Olası Çıktı:
A A A A B
A A A A B
Ek Kurallar
- Bu standart kurallar ile kod golf. En kısa kod kazanır.
- Girdi esnektir ve sizin için uygun olan liste biçiminde alınabilir.
- Yukarıdaki örneklerde gösterildiği gibi çıktı da esnektir. En makul değişikliklere izin verilecektir. Bir şeyden emin olup olmadığınızı sorun.
["H","EE","EEH","CCCC","CCCCI","DDDDFF","DDDDFFI","AAAAAAAA","AAAAAAAA-","----------"]
AAAABBBB
olarak aslında geçersiz ve ABB
değil - ama daha az okunabilir hale getirir, bu yüzden sadece bir çizgi içinde azaltma açık bir kural en iyisi olduğunu düşünüyorum.