Menzil üslü tamsayılar dizisi


16

Bir üçgen düşünün N inci satır (1-endeksli) birinci dizi olan K arasında pozitif bir tam sayı güçleri N . İşte ilk birkaç satır:

N | Üçgen

1 | 1
2 | 2 4
3 | 3 9 27
4 | 4 16 64256
5 | 5 25125 625 3125
...

Şimdi bu güçleri tek bir sıra halinde birleştirirsek, OEIS elde ederiz OEIS A075363'ü ederiz :

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

Bir tamsayı Verilen N , görev döndürmektir v- bu dizinin inci dönem. 0 veya 1 endekslemeyi seçebilirsiniz.

Test senaryoları

1 endeksli:

N -> Çıktı

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

0 endeksli:

N -> Çıktı

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

Bu boşlukların varsayılan olarak yasak olduğunu unutmayın . Bu , bu nedenle her dilde en kısa geçerli başvuru kazanır!


Ben test durumlarda bazı hata olduğunu düşünüyorum: 1 dizinli 10 256 olmalıdır; - 0 endeksli 9 256 olmalıdır.
Galen Ivanov

Sonunda boşluklar olabilir mi?
Stan Strum

@StanStrum Evet.
Bay Xcoder

Yanıtlar:



7

Kabuk , 7 bayt

!ṁṠM^ḣN

Çevrimiçi deneyin!

1 endeksli

Açıklama:

      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 bayt

@ Adám sayesinde 3 byte tasarruf edildi

⊢⊃∘∊⍳*⍳¨∘⍳

Çevrimiçi deneyin!

Nasıl?

⍳¨∘⍳ - girdi aralığındaki her sayı için bir aralık oluşturun

⍳* - giriş aralığındaki her bir sayıyı karşılık gelen güçlere yükseltin

- yassılaştırmak

⊢⊃ - n'inci elemanı seç


Çevrimiçi olarak denenirken kod 17 bayt gibi görünüyor ve skaler tam sayı argümanını kabul etmiyor veya tek bir tamsayı çıktısı üretmiyor gibi görünüyor
Graham

1
@Graham Sistemde, kod, bir değişkene atanır f(böylece f←burada sayılmaz 2 daha bayt olan), ve şu sonucu verir bir test tesisatı vardır 1için 10.
Outgolfer Erik

Şüphesiz, bu tür atamalar ve soru spesifikasyonuna göre girdi almak ve spesifikasyona göre çıktı almak için gerekli olanları içeren tüm baytları saymalısınız. APL yanıtım ekran girişi istiyor.
Graham

@Graham bu bir dyalog APL dfns. Herhangi bir girişe atama yapılmasını gerektirmez, TIO çıkışı sadece rahat görünüm içindir
Uriel

Bu temelde, APL bir astarı çalıştırmadan önce çalışma alanımda n atayabildiğimi ve böylece 7 bayt tasarruf edebileceğimi varsayabilirim, rakiplerimizin bunu kabul edeceğinden emin değilim.
Graham


3

Haskell , 30 28 bayt

Xnor sayesinde 2 bayt kaydedildi.

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

Çevrimiçi deneyin!

0 endeksli


1
Comp listesini kullanmak aslında daha kısadır [n^i|n<-[1..],i<-[1..n]].
xnor

Oh, bunu >>=formla karşılaştırıyordum ...
H.PWiz

3

MATL , 9 bayt

:t!^RXzG)

Endeksleme 1 tabanlıdır. Çevrimiçi deneyin! Veya tüm test senaryolarını doğrulayın .

açıklama

Girişi 5örnek olarak ele alalım.

:     % 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 bayt

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

Çevrimiçi deneyin!

1 endeksleme kullanır

Graham'ın cevabından↑,/ → ∊ alınan 2 bayt kaydedildi

Test bağlantısında, kodun fazladan bir şey gerektirdiğini f←, ancak bu kurallarımıza göre sayılmadığını unutmayın.


Çok zekisiniz kullanımı ile .
Adam

@ Adám Teşekkürler :-)
H.PWiz

{⍵⌷∊*∘⍳⍨¨⍳⍵}⊢⌷∘∊((*∘⍳)⍨¨⍳)⊢⌷∘∊(⍳(*∘⍳)¨⍳)⊢⌷∘∊⍳*∘⍳¨⍳
Adám

Bunu gönderirim ... bunun nasıl çalıştığı hakkında bir fikrim varsa
H.PWiz

bir dfn için olan bir tacit fonksiyonudur . Arasında ve çünkü gereklidir öyledir monadik denir askere endeks . Ve biz değişiyoruzf⍨⍳⍳ f ⍳ f ( *∘⍳¨) 'yi tek tek çağırmaktan kaçınırız ( ve ¨bitişik olduklarında, pozisyon değiştirebilirler).
Adam


2

05AB1E , 9 bayt

ƒNDLm`}I@

Çevrimiçi deneyin!

açıklama

1 endeksli.

ƒ           # 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)

Döngü yerine liste üzerinde alternatif çözüm

ÝεDLm}˜sè

1

Perl 6 , 29 bayt

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

Dene

Expanded:

{  # 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 bayt

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

Açıklama:

[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

Bu hangi APL lehçesi üzerinde çalışıyor?
Outgolfer Erik

APL + WIN'de yazılmıştır. Bunu gelecekteki cevaplarda açıklığa kavuşturacağım
Graham

Çektiğim benim yerine Cevabınız dan ↑,/. O işlevi bilmiyordum. Teşekkürler
H.PWiz

@EriktheOutgolfer Bunun herhangi bir modern APL üzerinde çalışacağını düşünüyorum.
Adam



0

Clojure 51 bayt

0 dizinli, örneğin girdi 9döndürür 256.0.

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


0

Pyt , 39 37 bayt

1 endeksli

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

Açıklama:

Kısacası, her satırı hesaplar. İstenen numara bu satırdaysa, döndürün; aksi takdirde bir sonraki satıra gidin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.