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!


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



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


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

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

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.


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è

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






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

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

Clojure 51 Bytes

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

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


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.