Contexto
Considere las matrices cuadradas con ncolumnas y filas que contienen los primeros enteros positivos n^2(es decir, al ncuadrado), donde nes impar. Los elementos de las matrices están dispuestas de tal manera que los números enteros 1a través n^2son colocados secuencialmente en una espiral hacia la izquierda comenzando en el centro y moviendo inicialmente a la izquierda. Llama a estas matricesM(n)
Para n=1esto simplemente da la matriz de un elemento M(1)=[[1]].
M(3) es la matriz
9 8 7
2 1 6
3 4 5
M(5) es la matriz
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
y M(7)es la matriz
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
Ahora considere aplanar esta matriz en una lista / matriz concatenando sus filas comenzando desde la parte superior y bajando. Llama a estas listas L(n). L(3), L(5)y L(7)se representan a continuación, con sus elementos delimitados por espacios.
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)
Podemos encontrar el índice i(n)de L(n)en una lista ordenada lexicográficamente de permutaciones de L(n). En Jelly, el Œ¿átomo da este índice para la lista en la que actúa.
Desafío
Su desafío es tomar un entero impar positivo ncomo entrada y salida del índice i(n).
Los primeros pocos valores son
n i(n)
-------
1 1
3 362299
5 15511208759089364438087641
7 608281864033718930841258106553056047013696596030153750700912081
Tenga en cuenta que i(n)~ = (n^2)!. Esto no está en OEIS.
Este es el código de golf por idioma, así que consiga esto en la menor cantidad de bytes posible.
fuente

[:A.@,,.@*0&((,~(#\.+{:)@{.)@|:|.)~2*<:. También jugué una versión del método en el artículo de voluta a 38 bytes[:A.@/:_1+/\@|.(2#1+i.)#&}:+:$_1,],1,-.Jalea , 27 bytes
Pruébalo en línea!
fuente
MATL ,
161514 bytesFalla en casos de prueba mayores que
3debido a imprecisiones de punto flotante y limitaciones de memoria.Pruébalo en línea!
Explicación
fuente