Banka çöktü ve tüm yerel mafya haydutlarının alışılmadık bir mazereti vardı: evde Connect 4 oynuyorlardı! Soruşturmaya yardımcı olmak için, pozisyonların gerçekten geçerli bir Connect 4 oyunundan pozisyonları olup olmadığını kontrol etmek için ele geçirilen tüm Connect 4 panolarını doğrulamak için bir program yazmanız istenir ve aceleyle bir araya getirilmedi Polis kapıyı çaldığı anda.
Connect 4 için kurallar: oyuncuları Rve Ysırayla renklerini döşemek için bir 7x6 ızgara sütunlarına bırakın. Bir oyuncu koluna bir kiremit düşürdüğünde, o sütunda doldurulmamış en düşük pozisyonu işgal etmek için aşağı düşer. Bir oyuncu, tahtadaki renginden dört taştan oluşan yatay, dikey veya çapraz bir koşu yapmayı başarırsa, o zaman kazanır ve oyun hemen biter.
Örneğin ( Rbaşlangıç ile birlikte ), aşağıdakiler mümkün olmayan bir Connect 4 pozisyonudur.
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | |R| | | | |
| | |Y| | | | |
|R| |Y| | | | |
Programınız veya işleviniz bir Connect 4 panosuna binmeli ve geri dönmeli
- Konumun imkansız olduğunu belirten bir sahte değer veya
- Bu pozisyona gelen hamle olası bir dizi (gösteren, 1 ila 7 arasındaki bir sayı ve bir dizi kolonlar sayılı
1için7soldan sağa ve sekansın bu nedenle112, örneğin, kolonun içinde kırmızı bir hareket gösterir1san bir hareket, ardından sütununda1, ardından sütununda kırmızı bir hareket2). Çözümünüzde belirttiğiniz sürece, isterseniz 1234567'den başka bir sütun numarası seçebilirsiniz. Listeyi başka bir biçimde göndermek isterseniz; örneğin, bir dizi olarak,[2, 4, 3, 1, 1, 3]o zaman bu da iyidir, hamlelerin ne olduğunu görmek kolay olduğu sürece.
Sen dışındaki harfleri kullanarak dahil olmak üzere herhangi mantıklı bir biçimde de kurulu okumayı tercih edebilirsiniz Rve Yoyuncular için, ancak ilk sırayı alacağını oyuncu belirtmelisiniz. Tahtanın her zaman 6x7 olacağını, iki oyuncuyla olduğunu varsayabilirsiniz.
Aldığınız pozisyonların, standart bir Connect 4 panosunda yaratılmasının en azından fiziksel olarak mümkün olduğunu varsayabilirsiniz; yani, 'yüzen' parça olmayacak. Tahtanın boş olmadığını kabul edebilirsiniz.
Bu kod golf, bu yüzden en kısa cevap kazanır. Standart boşluklar uygulanır.
Örnekler
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | --> 1234567 (one possible answer)
| | | | | | | |
|R|Y|R|Y|R|Y|R|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | |R| | | | | --> false
| | |Y| | | | |
|R| |Y| | | | |
| | | | | | | |
| | |Y| | | | |
| | |R| | | | |
| | |Y| | | | | --> 323333 (only possible answer)
| | |R| | | | |
| |Y|R| | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | --> false (this is the position arising after
| |Y|Y|Y|Y| | | the moves 11223344, but using those moves
| |R|R|R|R| | | the game would have ended once R made a 4)
| | | | | | | |
| | | | | | | |
|Y| | | | | | |
|R|Y| | | | | | --> 2134231211 (among other possibilities)
|R|R|Y| | | | |
|Y|R|R|Y| | | |
| | | | | | | |
| | | | | | | |
|Y| | | | | | |
|R|Y| | | | | | --> false (for example, 21342312117 does not
|R|R|Y| | | | | work, because Y has already made a diagonal 4)
|Y|R|R|Y| | |R|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | --> 112244553 or similar
|Y|Y| |Y|Y| | |
|R|R|R|R|R| | |