Проблема
Розглянемо квадрат 3 на 3 сітки невід’ємних цілих чисел. Для кожного рядка iвстановлюється сума цілих чисел r_i. Аналогічно для кожного стовпця jвстановлюється сума цілих чисел у цьому стовпці c_j.
Завдання полягає в написанні коду для перерахування всіх можливих різних призначень цілих чисел до сітки з урахуванням обмежень суми рядків і стовпців. Ваш код повинен виводити по одному завдання одночасно.
Вхідні дані
Ваш код повинен містити 3 невід’ємні цілі числа із зазначенням рядкових обмежень та 3 невід’ємні цілі числа із зазначенням обмежень стовпців. Ви можете припустити, що вони є дійсними, тобто сума чи обмеження рядків дорівнює сумі обмежень стовпців. Ваш код може зробити це будь-яким зручним для вас способом.
Вихідні дані
Ваш код повинен виводити різні 2d сітки, які він обчислює, у будь-якому читаному для людини форматі на ваш вибір. Чим красивіше, тим краще, звичайно. Вихідні дані не повинні містити повторюваних сіток.
Приклад
Якщо всі обмеження рядків і стовпців точно такі, 1то існують лише 6різні можливості. Для першого ряду ви можете помістити 1будь-який із перших трьох стовпців, для другого ряду - зараз2 альтернативи, а останній ряд тепер повністю визначається попередніми двома. Все інше в сітці повинно бути встановлено 0.
Скажімо, вхід 2 1 0для рядків та 1 1 1стовпців. Використовуючи прекрасний вихідний формат APL, можливими цілими сітками є:
┌─────┬─────┬─────┐
│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│
└─────┴─────┴─────┘
Тепер скажіть, що введення призначено 1 2 3для рядків та 3 2 1стовпців. Можливі цілі сітки:
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│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│
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘