Sorun
Negatif olmayan tam sayılardan oluşan bir 3'e 3 kareyi düşünün. Her satır i
için tamsayıların toplamı olarak ayarlanır r_i
. Her sütun j
için benzer şekilde , bu sütundaki tamsayıların toplamı olarak ayarlanır c_j
.
Görev, satır ve sütun toplamı kısıtlamaları göz önüne alındığında ızgaraya olası tüm tamsayı atamalarını numaralandırmak için kod yazmaktır. Kodunuz bir kerede bir ödev vermelidir.
Giriş
Kodunuz, satır kısıtlamalarını belirten negatif olmayan 3 tamsayı ve sütun kısıtlamalarını belirten negatif olmayan 3 tamsayı almalıdır. Bunların geçerli olduğunu, yani toplam veya satır kısıtlamalarının sütun sınırlamalarının toplamına eşit olduğunu varsayabilirsiniz. Kodunuz bunu uygun olan herhangi bir şekilde yapabilir.
Çıktı
Kodunuz, hesapladığı farklı 2d ızgaraları, seçtiğiniz herhangi bir insan tarafından okunabilir biçimde çıkarmalıdır. Tabii ki daha güzel. Çıktıda yinelenen ızgaralar bulunmamalıdır.
Misal
Tüm satır ve sütun kısıtlamaları aynıysa 1
, sadece 6
farklı olasılıklar vardır. İlk satır 1
için ilk üç sütunun herhangi birine bir koyabilirsiniz , ikinci satır için şimdi 2
alternatifler vardır ve son satır şimdi önceki iki tarafından tamamen belirlenir. Izgaradaki diğer her şey olarak ayarlanmalıdır 0
.
Girdinin 2 1 0
satırlar ve 1 1 1
sütunlar için olduğunu varsayalım. APL'nin güzel çıktı formatını kullanarak, olası tamsayı ızgaraları şunlardır:
┌─────┬─────┬─────┐
│0 1 1│1 0 1│1 1 0│
│1 0 0│0 1 0│0 0 1│
│0 0 0│0 0 0│0 0 0│
└─────┴─────┴─────┘
Şimdi girdinin 1 2 3
satırlar ve 3 2 1
sütunlar için olduğunu varsayalım. Olası tamsayı ızgaraları:
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│0 0 1│0 0 1│0 0 1│0 1 0│0 1 0│0 1 0│0 1 0│1 0 0│1 0 0│1 0 0│1 0 0│1 0 0│
│0 2 0│1 1 0│2 0 0│0 1 1│1 0 1│1 1 0│2 0 0│0 1 1│0 2 0│1 0 1│1 1 0│2 0 0│
│3 0 0│2 1 0│1 2 0│3 0 0│2 1 0│2 0 1│1 1 1│2 1 0│2 0 1│1 2 0│1 1 1│0 2 1│
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘