CJam ( 39 37 bytes)
A,1>e!{5ew{2Mtz}2*::+)-!},3f/Ma*Sf*N*
Demostración en línea (advertencia: puede tardar más de un minuto en ejecutarse, activando las indicaciones "¿Abortar este script?" Desde el navegador).
Funciona filtrando todas las cuadrículas posibles usando 5ew
para mapear
[a b c d e f g h i]
a
[[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]]
y luego descartando el elemento del medio y el elemento del medio del otro elemento para obtener
[[a b d e]
[b c e f]
[d e g h]
[e f h i]]
cuales son los cuatro cuadrados.
Peter Taylor
fuente
fuente
Respuestas:
Python 3.5, 135 bytes
Comprueba directamente la suma de cada cuadrado, menos el centro. Lo más probable es que todavía sea golfable por la
itertools
regla general " es innecesaria".fuente
Python2
327271270263260 bytes------------
Esto es ... no tan corto pero no usa bibliotecas. Esto permuta aleatoriamente un cuadrado, lo verifica en busca de magia, lo imprime y lo registra para evitar duplicados. Después de que ha impreso 376 cuadrados mágicos únicos, se detiene.
Tomé prestado el Pseudo Random Number Generator de la entrada de Keith Randall para el campo de golf llamado " Construye un generador de números aleatorios que pase las pruebas de Diehard "
De golf
fuente
Rubí 133
Enfoque directo de la fuerza bruta. Pruébalo aquí .
fuente
J, 83 bytes
Esta es una función que genera una cadena que contiene los 376 cuadrados resistentes. Utiliza fuerza bruta, genera todas las permutaciones de 1 a 9, forma cada una en una matriz de 3x3 y la filtra comprobando si las sumas de cada submatriz de 2x2 son iguales. Completa en medio segundo.
Uso
fuente