Urutan bilangan bulat rentang-eksponen

16

Pertimbangkan sebuah segitiga di mana N baris th (1-diindeks) adalah array pertama N kekuatan bilangan bulat positif dari N . Inilah beberapa baris pertama:

N | Segi tiga

1 | 1
2 | 2 4
3 | 3 9 27
4 | 4 16 64 256
5 | 5 25 125 625 3125
...

Sekarang jika kita menggabungkan kekuatan-kekuatan itu menjadi satu urutan, kita mendapatkan OEIS A075363 :

1, 2, 4, 3, 9, 27, 4, 16, 64, 256, 5, 25, 125, 625, 3125, 6, 36, 216, 1296, 7776, 46656 ...

Diberikan integer N , tugas Anda adalah mengembalikan suku ke- N dari urutan ini. Anda dapat memilih pengindeksan 0 atau 1.

Uji kasus

1-diindeks:

N -> Output

1 -> 1
2 -> 2
3 -> 4
5 -> 9
10 -> 256
12 -> 25
15 -> 3125

Diindeks 0:

N -> Output

0 -> 1
1 -> 2
2 -> 4
4 -> 9
9 -> 256
11 -> 25
14 -> 3125

Perhatikan bahwa celah ini dilarang secara default. Ini adalah , sehingga pengajuan valid terpendek dalam setiap bahasa menang!

Tuan Xcoder
sumber
Saya pikir ada beberapa kesalahan dalam kasus uji: dalam 1-diindeks 10 harus 256; dalam 0-diindeks 9 harus 256.
Galen Ivanov
Bisakah kita memiliki spasi tambahan?
Stan Strum
@StanStrum Ya.
Tn. Xcoder

Jawaban:

7

Sekam , 7 byte

!ṁṠM^ḣN

Cobalah online!

1-diindeks

Penjelasan:

      N   Get the list of all natural numbers
 ṁ        Map over each n in that list and then concatenate
  Ṡ  ḣ      Create the range [1,n] then ...
   M^       raise n to the power of each
!         Index into that sequence
H.Piz
sumber
5

Bahasa Wolfram (Mathematica) , 32 byte

r=Range;Flatten[r@#^r@r@#][[#]]&

Cobalah online!

Berkisar dengan kekuatan rentang ...

Martin Ender
sumber
Range@Range@3kembali {{1}, {1, 2}, {1, 2, 3}}?! Sial, daftar-threading Mathematica gila.
numbermaniac
4

APL (Dyalog) , 15 13 10 byte

3 byte disimpan berkat @ Adám

⊢⊃∘∊⍳*⍳¨∘⍳

Cobalah online!

Bagaimana?

⍳¨∘⍳ - buat rentang untuk setiap angka dalam rentang input

⍳* - naikkan setiap angka dalam kisaran input ke kekuatan yang sesuai

- Ratakan

⊢⊃ - pilih elemen ke-n

Uriel
sumber
Mencoba secara online kodenya tampak 17 byte dan sepertinya tidak menerima argumen integer skalar atau menghasilkan output integer tunggal
Graham
1
@ Graham Online, kode tersebut diberikan ke variabel f(dengan demikian f←adalah 2 byte lebih, yang tidak dihitung di sini), dan ada uji coba yang mengembalikan hasil dari 1ke 10.
Erik the Outgolfer
Tentunya Anda harus menghitung semua byte termasuk penugasan tersebut dan yang diperlukan untuk mengambil input sesuai dengan spesifikasi pertanyaan dan untuk output sesuai dengan spesifikasi. Jawaban APL saya meminta input layar.
Graham
@ Graham ini adalah aplikasi dyalog dfns. Tidak memerlukan penugasan untuk diterapkan pada input apa pun, outlet TIO hanya untuk kenyamanan tampilan
Uriel
Atas dasar itu dapat saya asumsikan saya dapat menetapkan dan dalam ruang kerja saya sebelum menjalankan APL satu liner dan dengan demikian menghemat 7 byte, saya tidak yakin sesama pesaing kita akan menerimanya.
Graham
3

Jelly , 7 byte

*R$€Ẏ⁸ị

Cobalah online!

-1 terima kasih kepada Tn . Xcoder .

1-diindeks.

Erik the Outgolfer
sumber
Kode yang luar biasa di sini.
Jonathan Allan
Menyingkirkan sintaksis mewah dengan ", solusi saya sendiri adalah 7 byte:*R$€F⁸ị
Mr. Xcoder
@ Mr.Xcoder Terima kasih, meskipun saya sudah menghapusnya ", tapi tetap saja. Itulah yang Anda dapatkan karena harus belajar sejarah: /
Erik the Outgolfer
3

Haskell , 30 28 byte

Disimpan 2 byte berkat xnor.

([n^m|n<-[1..],m<-[1..n]]!!)

Cobalah online!

Diindeks 0

H.Piz
sumber
1
Sebenarnya lebih singkat untuk menggunakan daftar comp [n^i|n<-[1..],i<-[1..n]].
xnor
Oh, saya membandingkannya dengan >>=formulir ...
H.PWiz
3

MATL , 9 byte

:t!^RXzG)

Pengindeksan adalah berbasis 1. Cobalah online! Atau verifikasi semua kasus uji .

Penjelasan

Pertimbangkan input 5sebagai contoh.

:     % Implcit input n. Push range [1 2 ... n]
      % STACK: [1 2 3 4 5]
t!^   % Matrix of all pair-wise powers
      % STACK: [1    2    3    4    5;
                1    4    9   16   25;
                1    8   27   64  125;
                1   16   81  256  625;
                1   32  243 1024 3125]
R     % Upper triangular matrix
      % STACK: [1    2    3    4    5;
                0    4    9   16   25;
                0    0   27   64  125;
                0    0    0  256  625;
                0    0    0    0 3125]
Xz    % Nonzeros. Reads values in column-major order
      % STACK: [1; 2; 4; 3; 9; ...; 625; 3125]
G)    % Get n-th entry (1-based). Implcit display
      % STACK: 9
Luis Mendo
sumber
3

APL (Dyalog) , 14 12 byte

{⍵⌷∊*∘⍳⍨¨⍳⍵}

Cobalah online!

Menggunakan pengindeksan 1

Disimpan 2 byte dengan ↑,/ → ∊ , diambil dari jawaban Graham

Perhatikan bahwa di tautan tes, kode memerlukan tambahan f←, tetapi ini tidak dihitung sesuai aturan kami.

H.Piz
sumber
Penggunaan dengan sangat pintar .
Adám
@ Adám Terima kasih :-)
H.PWiz
{⍵⌷∊*∘⍳⍨¨⍳⍵}⊢⌷∘∊((*∘⍳)⍨¨⍳)⊢⌷∘∊(⍳(*∘⍳)¨⍳)⊢⌷∘∊⍳*∘⍳¨⍳
Adám
Saya akan memposting itu ... jika saya tahu bagaimana itu bekerja
H.PWiz
adalah fungsi diam-diam apa yang ke dfn. The antara dan diperlukan karena disebut monadically, sehingga indeks terdaftar . Dan kami beralih f⍨⍳ke ⍳ f ⍳untuk menghindari pemanggilan f ( *∘⍳¨) secara monadik (kapanpun dan ¨berdekatan, mereka dapat bertukar posisi).
Adám
3

Pyth , 8 byte

@s^RSdSh

Coba di sini.

-1 terima kasih Steven H ..

Diindeks 0.

Erik the Outgolfer
sumber
@s^RSdShuntuk golf byte.
Steven H.
2

05AB1E , 9 byte

ƒNDLm`}I@

Cobalah online!

Penjelasan

1-diindeks.

ƒ           # for N in range [0 ... input]
 N          # push N
  DL        # push range [1 ... N]
    m       # raise N to the power of each in [1 ... N]
     `      # flatten to stack
      }     # end loop
       I@   # get the element at index (input)

Solusi alternatif atas daftar, bukan loop

ÝεDLm}˜sè
Emigna
sumber
1

Perl 6 , 29 byte

{({|($++X**1..$++)}...*)[$_]}

Menguji

Diperluas:

{  # bare block lambda with implicit parameter 「$_」

  (  # generate the sequence

    {  # code block used to generate each value in the sequence

      |(         # slip the values into the outer sequence

        $++      # post-incremented anonymous state value
        X**      # cross using &infix:«**»
        1 .. $++ # from 1 to post-incremented anonymous state value

      )
    }

    ...          # keep generating values until

    *            # never stop

  )[ $_ ]        # index into the sequence (0-based)
}
Brad Gilbert b2gills
sumber
1

JavaScript , 30 byte

-1 byte terima kasih kepada Nahuel Fouilleul

f=(x,n=1)=>x>n?f(x-n,n+1):n**x

Cobalah online!

FlipTack
sumber
-1 byte membalikkan tesf=(x,n=1)=>x>n?f(x-n,n+1):n**x
Nahuel Fouilleul
@NahuelFouilleul tentu saja, terima kasih!
FlipTack
0

APL + WIN, 23 byte

(∊n↑¨⊂[2]n∘.*n←⍳n)[n←⎕]

Penjelasan:

[n←⎕] prompts for screen input and selects the nth element of the concatenated vector
see below

n←⍳n creates a vector of 1 to n

∘.* outer product with exponentiation as the operator

⊂[2] enclose each row of the resulting array as an element of a nested array

∊n↑¨ take 1 to n elements from the 1 to nth row of the matrix and concatenate into a vector
Graham
sumber
Dialek APL apa yang berfungsi?
Erik the Outgolfer
Itu ditulis dalam APL + MENANG. Saya akan memperjelas jawaban ini di masa mendatang
Graham
Saya mengambil jawaban Anda untuk menggantikan jawaban saya ↑,/. Saya tidak tahu fungsi itu. Terima kasih
H.PWiz
@EriktheOutgolfer Saya pikir ini akan bekerja pada APL modern.
Adám
0

Perl 5, 30 + 1 (-p) byte

$_-=$.++until$.>$_;$_=$.**++$_

coba online

Nahuel Fouilleul
sumber
0

Clojure 51 byte

Diindeks 0, misalnya 9pengembalian input 256.0.

#(nth(for[i(range)j(range i)](Math/pow i(inc j)))%)
NikoNyrh
sumber
0

C 76, 62 byte

y;f(n){for(y=0;n>y*++y/2;);return(int)pow(y-1,n+y*(3-y)/2-1);}

y; f (n) {y = (int) (-. 5 + sqrt (1 + 8 * ~ -n) / 2) +2; n + = y * (3-y) / 2-1; return (int ) pow (y-1, n);}

Saya mendasarkannya pada kode ini

Cobalah di ideone

PrincePolka
sumber
0

Pyt , 39 37 byte

1-diindeks

←000`ŕŕ⁺ĐĐř^Đ04Ș↔+⇹Ł-Đ↔3Ș0>łŕ0↔⇹+⁻⦋↔ŕ

Penjelasan:

Secara singkat, ini menghitung setiap baris. Jika nomor yang diminta ada di baris itu, kembalikan; jika tidak, buka baris berikutnya.

mudkip201
sumber