Konteks
Pertimbangkan matriks persegi dengan n
kolom dan baris yang berisi bilangan bulat positif pertama n^2
(yaitu n
kuadrat), di mana n
ganjil. Elemen-elemen dari matriks disusun sedemikian rupa sehingga bilangan bulat 1
melalui n^2
ditempatkan secara berurutan dalam spiral berlawanan arah jarum jam mulai di tengah dan awalnya bergerak ke kiri. Sebut matriks iniM(n)
Untuk n=1
ini cukup berikan satu elemen matriks M(1)=[[1]]
.
M(3)
adalah matriks
9 8 7
2 1 6
3 4 5
M(5)
adalah matriks
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
dan M(7)
merupakan matriks
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
Sekarang pertimbangkan untuk meratakan matriks ini ke dalam daftar / larik dengan menggabungkan barisnya mulai dari atas dan bergerak ke bawah. Panggil daftar ini L(n)
. L(3)
, L(5)
dan L(7)
diwakili di bawah ini, dengan elemen-elemennya dibatasi oleh spasi.
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)
Kita dapat menemukan indeks i(n)
dari L(n)
dalam daftar leksikografi diurutkan permutasi dari L(n)
. Dalam Jelly, Œ¿
atom memberikan indeks ini untuk daftar kerjanya.
Tantangan
Tantangan Anda adalah mengambil bilangan bulat ganjil positif n
sebagai input dan output indeks i(n)
.
Beberapa nilai pertama adalah
n i(n)
-------
1 1
3 362299
5 15511208759089364438087641
7 608281864033718930841258106553056047013696596030153750700912081
Perhatikan bahwa i(n)
~ = (n^2)!
. Ini bukan pada OEIS.
Ini adalah kode golf per bahasa, jadi capai ini dalam byte sesedikit mungkin.