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!


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



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


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

Haskell , 30 28 byte

Disimpan 2 byte berkat xnor.

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

Cobalah online!

Diindeks 0


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

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.


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


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è

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)
}






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

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

Clojure 51 byte

Diindeks 0, misalnya 9pengembalian input 256.0.

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


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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.