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.