Ruby, 58 Bytes
Dies ist eine einfache Implementierung des Algorithmus in der C-Antwort von Releasing Helium Nuclei .
g=->m,n{n>m ?g[n,m]:m*~m*n*~n/4+n*((2*m-n)*(4*n*n-1)-3)/6}
Ich habe mit begrenztem Erfolg untersucht, warum diese Formel funktioniert. Es ist leicht zu bestätigen, dass die Anzahl der aufrechten Rechtecke gleich ist (m+1)*m/2 * (n+1)*n/2, die Anzahl der diagonalen Rechtecke ist etwas schwerer zu bestimmen.
Neil hat bestätigt , für m==ndass die Anzahl der geneigten Rechtecken in einem n*nQuadrat ist (4*n**4-n*n-3*n)/6und dass , wenn m>n Sie eine zusätzliche hinzufügen müssen (m-n)(n*(4*n*n-1)/3)(bezogen auf OEIS A000447 ), obwohl dies nicht erklären , wo diese beiden Formeln herkam. Ich habe einen Teil der Antwort gefunden.
Denn m==ndie Form innerhalb des Gitters ist ein aztekischer Diamant .

Die Anzahl der Rechtecken in einem Aztec Diamanten ist die Summe der Anzahl von großen Rechtecken überlagerte zu machen (zum vierten Diamanten, der in einem gefunden wird 5x5Gitter, 2x8, 4x6, 6x4, und 8x2) minus der Anzahl der Rechtecken zweimal gezählt (die Anzahl der Rechtecke im vorherigen aztekischen Diamanten).
Die Formel lautet hier (TeX wird später hinzugefügt):
# superimposed rectangles, 2x(2n-2), 4*(2n-4), ...
f = lambda n: sum( (2*k)*(2*k+1)/2 * (2*n-2*k)*(2*n-2*k+1)/2 for k in range(1, n) )
aztec_rect = f(n) - f(n-1)
Laut Wolfram Alpha, die geschlossene Form für fIS 1/30*(n-1)*n*(4*n**3+14*n**2+19*n+9)und die geschlossene Form für aztec_rectist, wie Neil entdeckt 1/6*n*(n-1)*(4*n**2+4*n+3) == 1/6*(4*n**4-n**2-3*n).
Ich habe noch warum entdecken (m-n)(n*(4*n*n-1)/3)Werke, obwohl ich vermute , dass es ist , weil eine Definition von A000447 ist binomial(2*n+1, 3). Ich halte dich auf dem laufenden.
Update: Ich habe Grund zu der Annahme, dass die Funktion der Anzahl der Rechtecke in einem erweiterten Azteken-Diamanten m>nmit der Anzahl der übereinanderliegenden 2k*2(n-k)Rechtecke im Diamanten-Minus zusammenhängt F(m-1,n-1). Mehr Ergebnisse, wenn ich sie habe.
Update: Ich habe eine andere Route ausprobiert und eine andere Formel für erweiterte aztekische Diamanten gefunden, die größtenteils erklärbar ist, aber einen Begriff hat, den ich noch nicht verstehe. Huzzah! : D
def f(m,n):
if n > m:
return f(n,m)
if n == 0:
return 0
else:
return(m-n+1)*(4*n**4-n*n-3*n)/6-f(m-1,n-1)+(m-n)*2+(m-n)*(n-2)-(m-n-1)*f(n-1,n-1)
Eine kurze Aufschlüsselung dieser letzten Formel:
(m-n+1)*(4*n**4-n*n-3*n)/6ist die Anzahl der überlagerten aztekischen Diamanten der Größe nin der Struktur, wie f(n,n) = (4*n**4-n*n-3*n)/6. f(7,3)hat 5 überlagerte aztekische Diamanten 3, während f(3,3)nur 1 Diamant hat.
-f(m-1,n-1) Entfernt einige der duplizierten Rechtecke aus der Mitte der überlagerten Diamanten.
+(m-n)*2Konten für 2 zusätzliche 2-by- (2n-1)Rechtecke für jede zusätzliche Diamanten.
+(m-n)*(n-2)Für jeden zusätzlichen Diamanten wird ein zusätzliches Quadrat nberechnet n.
-(m-n-1)*f(n-1,n-1)Dies ist der neue rätselhafte Begriff. Anscheinend habe ich einige zusätzliche Quadrate bei meiner Zählung nicht berücksichtigt, aber ich habe nicht herausgefunden, wo sie sich in dem erweiterten Diamanten befinden.
Hinweis: when m==n, m-n-1 = -1bedeutet, dass dieser letzte Term der Zählung Quadrate hinzufügt . In meiner regulären Formel fehlt mir möglicherweise etwas. Vollständige Offenlegung, dies sollte nur ein Patch für einen früheren Entwurf dieser Formel sein, der gerade funktioniert hat. Klar, ich muss noch nachdenken, was los ist, und es kann sein, dass meine Formel einige Fehler enthält. Ich werde euch auf dem Laufenden halten.
Russell, Gary und Weisstein, Eric W. "Aztec Diamond". Aus MathWorld - Eine Wolfram-Webressource. http://mathworld.wolfram.com/AztecDiamond.html