CJam ( 39 37 bajtów)
A,1>e!{5ew{2Mtz}2*::+)-!},3f/Ma*Sf*N*
Demo online (ostrzeżenie: uruchomienie może potrwać minutę, powodując wyświetlenie w przeglądarce komunikatów „Przerwać ten skrypt?”).
Działa poprzez filtrowanie wszystkich możliwych siatek za pomocą 5ew
mapowania
[a b c d e f g h i]
do
[[a b c d e]
[b c d e f]
[c d e f g]
[d e f g h]
[e f g h i]]
a następnie odrzucając środkowy element i środkowy element każdego innego elementu, aby uzyskać
[[a b d e]
[b c e f]
[d e g h]
[e f h i]]
które są czterema kwadratami.
Peter Taylor
źródło
źródło
Odpowiedzi:
Python 3.5, 135 bajtów
Bezpośrednio sprawdza sumę każdego kwadratu minus środek. Najprawdopodobniej nadal można grać w golfa według „
itertools
niepotrzebnej” reguły.źródło
Python2
327271270263260 bajtów------------
To ... nie jest tak krótkie, ale nie korzysta z bibliotek. To losowo permutuje kwadrat, sprawdza magię, drukuje i zapisuje, aby zapobiec duplikowaniu. Po wydrukowaniu 376 unikalnych magicznych kwadratów zatrzymuje się.
Pożyczkę Pseudo Random Number Generator pożyczyłem od wpisu Keitha Randalla dla golfa o nazwie „ Zbuduj generator liczb losowych, który przejdzie testy Dieharda ”
Grał w golfa
źródło
Ruby 133
Proste podejście z użyciem siły brutalnej. Sprawdź to tutaj .
źródło
J, 83 bajty
Ta funkcja generuje ciąg znaków zawierający 376 mocnych kwadratów. Wykorzystuje brutalną siłę, generuje wszystkie permutacje od 1 do 9, kształtuje każdą z nich w tablicę 3x3 i filtruje ją, sprawdzając, czy sumy każdej podtablicy 2x2 są równe. Wykonuje się w pół sekundy.
Stosowanie
źródło