Die Folge von durch den Bereich potenzierten ganzen Zahlen

16

Stellen Sie sich ein Dreieck vor, in dem die N- te Zeile (1-indiziert) das Array der ersten N positiven ganzzahligen Potenzen von N ist . Hier sind die ersten paar Zeilen:

N | Dreieck

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

Wenn wir nun diese Kräfte in einer einzigen Sequenz verketten, erhalten wir OEIS A075363 :

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

Bei einer Ganzzahl N müssen Sie den N- ten Term dieser Sequenz zurückgeben. Sie können zwischen 0- und 1-Indizierung wählen.

Testfälle

1-indiziert:

N -> Ausgabe

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

0-indiziert:

N -> Ausgabe

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

Beachten Sie, dass diese Lücken standardmäßig verboten sind. Dies ist , daher gewinnt die kürzeste gültige Einsendung in jeder Sprache!

Mr. Xcoder
quelle
Ich denke, es gibt einige Fehler in Testfällen: in 1-indizierten 10 sollte 256 sein; in 0-indizierten 9 sollte 256 sein.
Galen Ivanov
Können wir nachgestellte Leerzeichen haben?
Stan Strum
@StanStrum Ja.
Mr. Xcoder

Antworten:

7

Schale , 7 Bytes

!ṁṠM^ḣN

Probieren Sie es online!

1-indiziert

Erläuterung:

      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.PWiz
quelle
4

APL (Dyalog) , 15 13 10 Bytes

3 Bytes gespart dank @ Adám

⊢⊃∘∊⍳*⍳¨∘⍳

Probieren Sie es online!

Wie?

⍳¨∘⍳ - Erstellen Sie einen Bereich für jede Zahl im Eingabebereich

⍳* - Erhöhen Sie jede Zahl im Eingabebereich auf die entsprechenden Potenzen

- ebnen

⊢⊃ - Wählen Sie das n-te Element

Uriel
quelle
Wenn Sie es online versuchen, scheint der Code 17 Byte zu sein und es scheint, dass er kein skalares Integer-Argument akzeptiert oder eine einzelne Integer-Ausgabe erzeugt
Graham,
1
@ Abraham Online, der Code wird einer Variablen zugewiesen f(also f←2 weitere Bytes, die hier nicht gezählt werden), und es gibt ein Testkabel, das die Ergebnisse von 1bis zurückgibt 10.
Erik der Outgolfer
Sicherlich müssen Sie alle Bytes einschließlich solcher Zuordnungen zählen und die, die erforderlich sind, um die Eingabe gemäß der Fragenspezifikation aufzunehmen und gemäß der Spezifikation auszugeben. Meine APL-Antwort fordert zur Eingabe des Bildschirms auf.
Graham
@ Abraham das ist ein dyalog APL dfns. Es ist keine Zuweisung an einem Eingang erforderlich, der TIO-Ausgang dient nur der bequemen Ansicht
Uriel
Auf dieser Basis kann ich davon ausgehen, dass ich n innerhalb meines Arbeitsbereichs zuweisen kann, bevor der APL One Liner ausgeführt wird, und dadurch 7 Byte einsparen kann. Ich bin nicht sicher, ob unsere Mitbewerber dies akzeptieren werden.
Graham
3

Gelee , 7 Bytes

*R$€Ẏ⁸ị

Probieren Sie es online!

-1 Danke an Herrn Xcoder .

1-indiziert.

Erik der Outgolfer
quelle
Genialer Code hier.
Jonathan Allan
Erste Phantasie Syntax los mit ", meine eigene Lösung ist 7 Byte:*R$€F⁸ị
Herr Xcoder
@ Mr.Xcoder Danke, ich hatte das zwar schon entfernt ", aber trotzdem. Das ist, was Sie für das Studium der Geschichte bekommen: /
Erik the Outgolfer
3

Haskell , 30 28 Bytes

2 Bytes dank xnor gespart.

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

Probieren Sie es online!

0-indiziert

H.PWiz
quelle
1
Es ist tatsächlich kürzer, die Liste comp zu verwenden [n^i|n<-[1..],i<-[1..n]].
Xnor
Oh, ich habe es mit der >>=Form verglichen ...
H.PWiz
3

MATL , 9 Bytes

:t!^RXzG)

Die Indizierung basiert auf 1. Probieren Sie es online! Oder überprüfen Sie alle Testfälle .

Erläuterung

Betrachten Sie die Eingabe 5als Beispiel.

:     % 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
quelle
3

APL (Dyalog) , 14 12 Bytes

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

Probieren Sie es online!

Verwendet 1-Indizierung

2 Bytes mit gespeichert ↑,/ → ∊, aus Grahams Antwort entnommen

Beachten Sie, dass für den Testlink ein zusätzlicher Code erforderlich ist f←, der jedoch nicht gemäß unseren Regeln gezählt wird.

H.PWiz
quelle
Sehr kluger Umgang mit .
Adám,
@ Adám Danke :-)
H.PWiz
{⍵⌷∊*∘⍳⍨¨⍳⍵}⊢⌷∘∊((*∘⍳)⍨¨⍳)⊢⌷∘∊(⍳(*∘⍳)¨⍳)⊢⌷∘∊⍳*∘⍳¨⍳
Adám
Ich würde das posten ... wenn ich eine Idee hätte, wie das funktioniert
H.PWiz
ist zu einer stillschweigenden funktion was ist zu einer dfn. Das zwischen und wird benötigt, da es monadisch aufgerufen wird, und es wird das eingetragene indexiert . Und wir wechseln f⍨⍳zu ⍳ f ⍳, um zu vermeiden, f ( *∘⍳¨) monadisch aufzurufen (wann immer und ¨nebeneinander, können sie die Position tauschen).
Adám
2

05AB1E , 9 Bytes

ƒNDLm`}I@

Probieren Sie es online!

Erläuterung

1-indiziert.

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

Alternative Lösung über eine Liste anstelle einer Schleife

ÝεDLm}˜sè
Emigna
quelle
1

Perl 6 , 29 Bytes

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

Probier es aus

Erweitert:

{  # 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
quelle
1

JavaScript , 30 Bytes

-1 Byte danke an Nahuel Fouilleul

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

Probieren Sie es online!

FlipTack
quelle
-1 Byte invertiert den Testf=(x,n=1)=>x>n?f(x-n,n+1):n**x
Nahuel Fouilleul
@NahuelFouilleul natürlich danke!
FlipTack
0

Jelly ,  15  12 Bytes

Wahrscheinlich nicht optimal.

-3 danke an Erik the Outgolfer beim Golfen.

=RṁR€T€µT*FḢ

Probieren Sie es online!

Jonathan Allan
quelle
Wow, du musst heute wirklich müde sein.
Erik der Outgolfer 19.11.17
Ich bin wirklich sehr krank!
Jonathan Allan
10
Es tut uns leid! Ich hoffe dir geht es bald besser!
Erik der Outgolfer 19.11.17 um 17:41
Auch hier sind 3 Bytes weniger, die ich trivial herausholen konnte.
Erik der Outgolfer 19.11.17
0

APL + WIN, 23 Bytes

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

Erläuterung:

[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
quelle
Auf welchem ​​APL-Dialekt funktioniert das?
Erik der Outgolfer
Es ist in APL + WIN geschrieben. Ich werde dies in zukünftigen Antworten klarstellen
Graham
Ich habe von Ihrer Antwort genommen, um meine zu ersetzen ↑,/. Ich wusste nichts von dieser Funktion. Danke
H.PWiz
@EriktheOutgolfer Ich denke, das funktioniert auf jeder modernen APL.
Adám,
0

Perl 5, 30 + 1 (-p) Bytes

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

versuche es online

Nahuel Fouilleul
quelle
0

Clojure 51 Bytes

0-indiziert, z. B. Input- 9Returns 256.0.

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

Pyt , 39 37 Bytes

1-indiziert

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

Erläuterung:

Kurz, es berechnet jede Zeile. Wenn sich die angeforderte Nummer in dieser Zeile befindet, geben Sie sie zurück. Andernfalls fahren Sie mit der nächsten Zeile fort.

mudkip201
quelle