Zadanie 7 (termin oddania 9.02, 18:30, 4 pkt.) ---------------------------------------------- W pliku kostki: file of array[1..n,1..n] of 0..1 znajdują się opisy kostek układanki. Wartość 1 oznacza, że odpowiednie pole jest elementem kostki, 0 że nie. Np. dla n = 4 jedna z kostek mogłaby mieć postać: 0 1 0 0 1 1 1 0 0 1 0 0 0 0 0 0 W pliku figura: file of array[1..m,1..m] of integer znajduje się zestaw układanek do ułożenia. Każda układanka ma postać analogiczną jak kostka (tyle że m jest zapewne większe od n). Zagadkę daje się rozwiązać wtedy i tylko wtedy, gdy da się tak ułożyć _wszystkie_ kostki układanki, każdą dokładnie raz, żeby wszystkie jedynki kostek znajdowały się na polach układanki z wartością 1 i na każde pole układanki z wartością 1 była położona dokładnie jedna część kostki z jedynką. Z powyższego wynika, że aby udało się ułożyć układankę liczba jedynek we wszystkich kostkach musi być równa liczbie jedynek w układance. Wynika stąd również, że kostka n*n może wystawać poza układankę, ale tylko częścią nie zawierającą jedynek. Uwaga: kostki można obracać, ale nie można ich odwracać na drugą stronę. Można założyć, że liczba kostek jest nie większa niż stała MaxLKostek=20, stała n wynosi 4, zaś stała m=10. Napisz program, który wywołany z dwoma parametrami: nazwą pliku z kostkami i nazwą pliku z układankami wypisze na standardowe wyjście dla każdej układanki w osobnym wierszu liczbę sposobów jej ułożenia (nie uwzględniając symetrii, tzn. np. nie przejmujemy się tym, że pokazaną powyżej kostkę można położyć ze względu na obroty na 4 sposoby, które są ze sobą identyczne, nie przejmujemy się również tym, że sama układanka może mieć osie symetrii). Błędne sytuacje (np. brak plików z danymi) należy zasygnalizować stosownym komunikatem wypisanym na standardowe wyjście a potem należy wywołać procedurę halt.