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ı R
ve Y
sı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 ( R
baş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ı
1
için7
soldan sağa ve sekansın bu nedenle112
, örneğin, kolonun içinde kırmızı bir hareket gösterir1
san 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 R
ve Y
oyuncular 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| | |