Zapraszamy do poznania kwadratu magicznego kwadrat magiczny
Kwadrat magiczny – tablica składająca się z n wierszy i n kolumn (n>2), w którą wpisano n2 różnych dodatnich liczb naturalnych w ten sposób, że suma liczb w każdym wierszu, w każdej kolumnie i w każdej przekątnej jest taka sama (tzw. suma magiczna). Kwadrat, w którym suma liczb w każdym wierszu i każdej kolumnie jest taka sama, ale sumy liczb w przekątnych są różne, nazywa się półmagicznym. Kwadraty magiczne nie mają żadnego zastosowania naukowego, ich układanie jest rodzajem rozrywki matematycznej. Kwadratów magicznych jest nieskończenie wiele. Najpopularniejsze są kwadraty zbudowane z kolejnych wyrazów ciągu arytmetycznego: 1, 2, ... n2. Suma magiczna takiego kwadratu wynosi .
Zastanawiałem się dłuższy czas, czy zakładać temat w tym dziale, czy w C i C++, ale ostatecznie stwierdziłem, że bardziej potrzebuję teoretycznej wiedzy, czy naprowadzenia na rozwiązanie. Póki co, nie mam problemów w kodzie, bo go nie mam ;) Do rzeczy: W jaki sposób wygenerować magiczny kwadrat? Nie mogłem w sieci znaleźć żadnych ciekawych, mądrych sposobów ani algorytmów na to. Jedyne co mi przychodzi na myśl, to generowanie kwadratów z losowymi liczbami i sprawdzanie, czy są to magiczne kwadraty, ale... Jest to strasznie nie wydajne rozwiązanie i musi istnieć coś lepszego. Ktoś ma może jakieś pomysły?
Wpisz brakujące liczby naturalne od 0 do 24 tak, aby powstał kwadrat magiczny, w którym suma liczb w każdej kolumnie, w każdym wierszu i na przekątnych jest równa 60.
[***] - bardzo trune Wpisz brakujące liczby naturalne od 1 do 25 tak, aby powstał kwadrat magiczny, w którym suma liczb w każdej kolumnie, w każdym wierszu i na przekątnych jest równa 65.
Zastanawiałem się dłuższy czas, czy zakładać temat w tym dziale, czy w C i C++, ale ostatecznie stwierdziłem, że bardziej potrzebuję teoretycznej wiedzy, czy naprowadzenia na rozwiązanie. Póki co, nie mam problemów w kodzie, bo go nie mam ;) Do rzeczy: W jaki sposób wygenerować magiczny kwadrat? Nie mogłem w sieci znaleźć żadnych ciekawych, mądrych sposobów ani algorytmów na to. Jedyne co mi przychodzi na myśl, to generowanie kwadratów z losowymi liczbami i sprawdzanie, czy są to magiczne kwadraty, ale... Jest to strasznie nie wydajne rozwiązanie i musi istnieć coś lepszego.