Arsa : Jimmy kayıp; Onu bulmalıyız. Ayrılmalıyız.
Arsa büküm : Jimmy zaten öldü.
Fakat oyuncu kadromuz bunu bilmiyor, bu yüzden yine de tüm alanı aramaları gerekiyor. "N", ". açık alan için veya bir engel için "#". Bu harita .
0 <= p <= 26 costar , 0 <= q <= 26 ekstra ve 1 yıldız var . Herkes başlangıçta S işaretli hücrede.
Kurallar
Her insan aşağıda gösterilen bir görüş yarıçapına sahiptir:
...
.....
..@..
.....
...
Yıldız, "A" ile başlayan büyük harflerle kostarları "@", ekstralar ise "a" ile başlayan küçük harflerle gösterilir. Başlangıçta, başlangıç noktasını çevreleyen görüş yarıçapı arandı olarak işaretlendi. Bu haritanın tüm açık alanını oluşturuyorsa oyun sona erer. Her sıra, aşağıdaki sırayla :
- Her insan eşzamanlı olarak bir kralı hareket ettirir (ya ayakta durur ya da komşu 8 hücreden birine taşınır).
- Görme yarıçapındaki her bir insanın etrafındaki hücrelerin tümü aranan sayılır.
- Bir costar başka birini göremezse, ölür. Eğer bir ekstra, bir costar, yıldız veya en az 2 ekstra göremiyorsa, ölür. Bunlar eşzamanlı olarak gerçekleşir - yani, tek seferde ölümlerin zincirleme reaksiyonu olamaz; Yukarıdaki koşullar kontrol edilir ve ölecek olan herkes bir kerede ölür.
- Haritadaki tüm açık alanlar arandıysa, arama sona erer.
notlar
Birden fazla insan herhangi bir noktada aynı meydanda olabilir ve bu insanlar birbirlerini görebilir.
Engeller görme, sadece hareketi engellemez; insanlar birbirlerini görebilirler.
Haritadaki açık alanların kral hareketleriyle bağlanacağı garanti edilir.
İlk "S" aynı zamanda bir engelden ziyade açık alan olarak kabul edilir.
Açık alana inen herhangi bir kral hareketi geçerlidir. Örneğin, aşağıdaki hamle yasaldır:
.... ....
.@#. ---> ..#.
.#.. .#@.
.... ....
Giriş
Giriş biçiminde olacaktır
N M p q
[N cols x M rows grid with characters ".", "#", and "S"]
Örnek girişler:
6 5 0 0
......
......
..S...
......
......
ve
9 9 1 1
S.......#
.......##
......##.
..#####..
...##....
...##....
...#.....
....#..#.
.........
p ve q, sırasıyla kostarların ve ekstraların sayısıdır.
Çıktı
Çıktı, her bir dönüş için, gösterilen yönlere göre yapılan hareketler olmalıdır.
789
456
123
Hareketlerin sırası önemli değil çünkü hepsi aynı anda hareket ediyor. Bir kişi için bir hareketi listelememek iyidir ve onu 5 yönünde hareket ettirmeye eşdeğerdir. Hareketler aşağıdaki biçimde listelenmelidir:
@9 A2 a2 B7.
"" hamlelerinin sona erdiğini gösterir.
Harita arandıktan sonra, son çıktı satırı boşluklarla ayrılmış üç tamsayı olmalıdır: tahtada arama işlemini bitirmek için götürdüğünüz sıra sayısı, yaşayan koztar sayısı ve canlı ekstra sayısı. İlk örnek giriş için
6 5 0 0
......
......
..S...
......
......
aşağıdakiler geçerli çıktı:
@4.
@6.
@6.
@6.
4 0 0
Son bir not: yıldız ölemez ve haritadaki açık alanın bağlanacağı garanti edilir, bu nedenle arama her zaman başarılı olur.
puanlama
Puanınız, bir dizi kıyaslama testinden geçen toplam tur sayısıdır ; Cevabınızla birlikte kendi test davasınızı gönderebilirsiniz. Kıyas ölçüt setinde yaşayan Kostarların sayısının toplamı kravat kırıcı olarak kullanılacak ve hala bir bağ olması durumunda, yaşayan ekstraların sayısının toplamı kullanılacaktır.
Test Seti ve Kontrol Cihazı
Şu anda, 5 harita https://github.com/Tudwell/HorrorMovieSearchParty/ adresinde çevrimiçi . Cevap gönderen herhangi bir kişi, herhangi bir sebeple reddetme hakkını saklı tuttuğum bir test vakası da gönderebilir (haritanızı bir nedenden dolayı reddedersem, başka bir tane gönderebilirsiniz). Bunlar benim takdirime göre belirlenen teste eklenecek.
Python (2.7.5 test) kontrol olarak github sağlanır controller.py . Buradaki ikinci denetleyici, controller_disp.py , arama sırasında grafiksel çıktı göstermesi dışında aynıdır (Pygame kütüphanesi gerektirir).
Kullanım :
python controller.py <map file> <your execution line>
yani:
python controller.py map1.txt python solver.py map1.txt
Denetleyici, formun çıktısına sahiptir (programınızın stdinine )
Turn 1
@:2,3 A:2,3 B:2,3.
##...##
#ooo..#
ooooo..
ooooo..
ooooo..
#ooo...
##.....
###....
----------------------------------------
Bu, sıra numarası (1. sıra sizden hareket etmeden önce), tüm oyuncuların ve. kurulu ve 40 '' ile bir çizgi. Daha sonra formun girişini (programınızın stdoutundan ) bekler
@9 A2 B7.
Bu yukarıda belirtilen çıktı formatıdır. Kontrolör, aranan açık alan için bir 'o' üretir '.' aranmamış açık alan için ve engeller için '#'. Yalnızca insanlar listesinde ve koordinatlarında yaşayan insanları içerir ve oyunun tüm kurallarını izler. Geçersiz bir hareket denendiğinde denetleyici çıkacaktır. Belirli bir dönüşün hamleleri aramayı bitirirse, çıktı yukarıdaki gibi olmaz; bunun yerine biçimindedir
Finished in 4 turns
4 1 0
Burada "4 1 0", 4 toplam dönüş, 1 yaşayan koztar ve 0 yaşayan ekstra anlamına gelir. Denetleyiciyi kullanmanıza gerek yoktur; kullanmak veya kendi girişiniz için değiştirmek için çekinmeyin. Kullanmaya ve sorunla karşılaşmaya karar verirseniz, bana bildirin.
Denetleyiciyi yazmama yardım ettiğin için @githubphagocy'e teşekkür ederim.
Düzenleme: Randomize bir giriş için, belirli bir haritadaki herhangi bir koşuyu o harita için puanınız olarak seçebilirsiniz. Puanlama gereklilikleri nedeniyle, her harita için her zaman en az dönüş, en az ölü costar, sonra en az ölü ekstra seçmelisiniz.