Kontext
Betrachten Sie quadratische Matrizen mit n
Spalten und Zeilen, die die ersten n^2
(dh n
quadratischen) positiven ganzen Zahlen enthalten, wobei n
ungerade ist. Die Elemente der Matrizen sind so angeordnet, dass die 1
durchgehenden Ganzzahlen n^2
nacheinander in einer Spirale gegen den Uhrzeigersinn angeordnet sind, beginnend in der Mitte und anfänglich nach links bewegend. Nennen Sie diese MatrizenM(n)
Dafür n=1
gibt es einfach die Ein-Element-Matrix M(1)=[[1]]
.
M(3)
ist die Matrix
9 8 7
2 1 6
3 4 5
M(5)
ist die Matrix
25 24 23 22 21
10 9 8 7 20
11 2 1 6 19
12 3 4 5 18
13 14 15 16 17
und M(7)
ist die Matrix
49 48 47 46 45 44 43
26 25 24 23 22 21 42
27 10 9 8 7 20 41
28 11 2 1 6 19 40
29 12 3 4 5 18 39
30 13 14 15 16 17 38
31 32 33 34 35 36 37
Ziehen Sie nun in Betracht, diese Matrix zu einer Liste / einem Array zu reduzieren, indem Sie ihre Zeilen von oben nach unten verketten. Rufen Sie diese Listen auf L(n)
. L(3)
, L(5)
Und L(7)
sind im folgenden dargestellt, wobei ihre Elemente durch Zwischenräume getrennt.
9 8 7 2 1 6 3 4 5 (n=3)
25 24 23 22 21 10 9 8 7 20 11 2 1 6 19 12 3 4 5 18 13 14 15 16 17 (n=5)
49 48 47 46 45 44 43 26 25 24 23 22 21 42 27 10 9 8 7 20 41 28 11 2 1 6 19 40 29 12 3 4 5 18 39 30 13 14 15 16 17 38 31 32 33 34 35 36 37 (n=7)
Wir können den Index i(n)
von L(n)
in einer lexikographisch sortierten Liste von Permutationen von finden L(n)
. In Jelly gibt das Œ¿
Atom diesen Index für die Liste an, auf die es wirkt.
Herausforderung
Ihre Herausforderung besteht darin, eine positive ungerade Ganzzahl n
als Eingabe und Ausgabe des Index zu verwenden i(n)
.
Die ersten Werte sind
n i(n)
-------
1 1
3 362299
5 15511208759089364438087641
7 608281864033718930841258106553056047013696596030153750700912081
Beachten Sie, dass i(n)
~ = (n^2)!
. Dies ist nicht auf OEIS.
Dies ist Code Golf pro Sprache, also erreichen Sie dies in möglichst wenigen Bytes.
quelle
[:A.@,,.@*0&((,~(#\.+{:)@{.)@|:|.)~2*<:
. Ich golfed auch eine Version des Verfahrens in dem Spiral Artikel bis 38 Bytes[:A.@/:_1+/\@|.(2#1+i.)#&}:+:$_1,],1,-
.Gelee , 27 Bytes
Probieren Sie es online aus!
quelle
MATL ,
161514 BytesSchlägt für Testfälle größer als
3
aufgrund von Gleitkomma-Ungenauigkeiten und Speicherbeschränkungen.Probieren Sie es online aus!
Erläuterung
quelle