Sorun
Negatif olmayan tam sayılardan oluşan bir 3'e 3 kareyi düşünün. Her satır iiçin tamsayıların toplamı olarak ayarlanır r_i. Her sütun jiç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 6farklı olasılıklar vardır. İlk satır 1için ilk üç sütunun herhangi birine bir koyabilirsiniz , ikinci satır için şimdi 2alternatifler 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 0satırlar ve 1 1 1sü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 3satırlar ve 3 2 1sü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│
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘