ลำดับของเลขจำนวนเต็มแบบเอ็กซ์โพเนนเชียล


16

พิจารณารูปสามเหลี่ยมที่เป็นNแถว TH (1 จัดทำดัชนี) เป็นอาร์เรย์จากครั้งแรกที่ไม่มีอำนาจจำนวนเต็มบวกของN นี่คือสองสามแถวแรก:

N | สามเหลี่ยม

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

ตอนนี้ถ้าเราต่อพลังเหล่านั้นเป็นลำดับเดียวเราจะได้ OEIS A075363 :

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

รับจำนวนเต็มNงานของคุณคือส่งคืนคำที่Nของลำดับนี้ คุณสามารถเลือก 0 หรือ 1 การจัดทำดัชนี

กรณีทดสอบ

1 การจัดทำดัชนี:

N -> เอาท์พุท

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

0 การจัดทำดัชนี:

N -> เอาท์พุท

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

โปรดทราบว่าช่องโหว่เหล่านี้เป็นสิ่งต้องห้ามโดยค่าเริ่มต้น นี่คือดังนั้นการส่งที่ถูกต้องสั้นที่สุดในแต่ละภาษาชนะ!


ฉันคิดว่ามีข้อผิดพลาดบางอย่างในกรณีทดสอบ: ใน 1 ดัชนี 10 ควร 256; ใน 0- ดัชนี 9 ควรเป็น 256
Galen Ivanov

เรามีช่องว่างต่อท้ายได้ไหม
Stan Strum

@StanStrum ใช่
Mr. Xcoder

คำตอบ:



7

Husk , 7 ไบต์

!ṁṠM^ḣN

ลองออนไลน์!

1 การจัดทำดัชนี

คำอธิบาย:

      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 ไบต์

บันทึก 3 ไบต์ด้วย @ Adám

⊢⊃∘∊⍳*⍳¨∘⍳

ลองออนไลน์!

อย่างไร?

⍳¨∘⍳ - สร้างช่วงสำหรับแต่ละหมายเลขในช่วงของอินพุต

⍳* - เพิ่มแต่ละหมายเลขในช่วงของการป้อนข้อมูลไปยังพลังที่สอดคล้องกัน

- แบน

⊢⊃ - เลือกองค์ประกอบที่ n


ลองออนไลน์รหัสดูเหมือนว่า 17 ไบต์และดูเหมือนจะไม่ยอมรับอาร์กิวเมนต์จำนวนเต็มสเกลาหรือสร้างเอาต์พุตจำนวนเต็มเดียว
Graham

1
@Graham ออนไลน์รหัสที่ได้รับมอบหมายให้กับตัวแปรf(จึงf←เป็น 2 ไบต์มากขึ้นซึ่งจะไม่นับที่นี่) และมีความเป็นเทียมทดสอบว่าผลตอบแทนจากการ1 10
Erik the Outgolfer

แน่นอนคุณต้องนับไบต์ทั้งหมดรวมถึงการกำหนดดังกล่าวและสิ่งที่ต้องใช้ในการป้อนข้อมูลตามข้อมูลจำเพาะของคำถามและส่งออกตามข้อกำหนด คำตอบ APL ของฉันแจ้งให้ป้อนหน้าจอ
เกรแฮม

@ Graham นี่คือ dyalog APL dfns ไม่จำเป็นต้องมีการมอบหมายให้ใช้กับอินพุตใด ๆ เต้าเสียบ TIO เป็นเพียงเพื่อความสะดวกสบาย
Uriel

บนพื้นฐานนั้นฉันสามารถสันนิษฐานได้ว่าฉันสามารถกำหนด n ภายในเวิร์กสเปซของฉันก่อนรัน APL หนึ่งไลเนอร์และดังนั้นจึงประหยัดได้ 7 ไบต์ฉันไม่แน่ใจว่าคู่แข่งรายอื่นของเราจะยอมรับสิ่งนั้น
เกรแฮม

3

เยลลี่ขนาด 7 ไบต์

*R$€Ẏ⁸ị

ลองออนไลน์!

-1 ขอบคุณที่นาย Xcoder

1 การจัดทำดัชนี


รหัสดีเลิศที่นี่
Jonathan Allan

กำจัดซินแท็กซ์แฟนซีด้วย"โซลูชันของฉันคือ 7 ไบต์:*R$€F⁸ị
Mr. Xcoder

@ Mr.Xcoder ขอบคุณแม้ว่าฉันได้ลบแล้ว"แต่ยัง นั่นคือสิ่งที่คุณจะต้องศึกษาประวัติศาสตร์: /
Erik the Outgolfer

3

Haskell , 30 28 ไบต์

บันทึก 2 ไบต์ต้องขอบคุณ xnor

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

ลองออนไลน์!

0 การจัดทำดัชนี


1
[n^i|n<-[1..],i<-[1..n]]มันเป็นเรื่องจริงที่สั้นกว่าที่จะใช้คอมพ์รายการ
xnor

โอ้ฉันได้รับการเปรียบเทียบกับ>>=รูปแบบ ...
H.PWiz

3

MATL , 9 ไบต์

:t!^RXzG)

การจัดทำดัชนีเป็นแบบ 1 ลองออนไลน์! หรือตรวจสอบกรณีทดสอบทั้งหมด

คำอธิบาย

พิจารณาอินพุต5เป็นตัวอย่าง

:     % 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 ไบต์

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

ลองออนไลน์!

ใช้การจัดทำดัชนี 1 รายการ

บันทึก 2 ไบต์ด้วย↑,/ → ∊จากคำตอบของ Graham

โปรดทราบว่าในลิงก์ทดสอบรหัสนั้นจำเป็นต้องมีรหัสเพิ่มเติมf←แต่จะไม่นับตามกฎของเรา


ใช้ฉลาดมากด้วย
อดัม

@ Adámขอบคุณ :-)
H.PWiz

{⍵⌷∊*∘⍳⍨¨⍳⍵}→การ⊢⌷∘∊((*∘⍳)⍨¨⍳)→การ⊢⌷∘∊(⍳(*∘⍳)¨⍳)→การ⊢⌷∘∊⍳*∘⍳¨⍳
อดัม

ฉันจะโพสต์สิ่งนั้น ... หากฉันมีความคิดว่ามันทำงานอย่างไร
H.PWiz

คือฟังก์ชั่นโดยปริยายสิ่งที่เป็น dfn ระหว่างและเป็นสิ่งจำเป็นเพราะจะเรียกว่า monadically จึงเป็นดัชนีเกณฑ์ และเราเปลี่ยนf⍨⍳เป็น⍳ f ⍳เพื่อหลีกเลี่ยงการโทร f ( *∘⍳¨) แบบ monadically (ทุกครั้งและ¨อยู่ติดกันพวกเขาอาจสลับตำแหน่ง)
Adám


2

05AB1E , 9 ไบต์

ƒNDLm`}I@

ลองออนไลน์!

คำอธิบาย

1 การจัดทำดัชนี

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

โซลูชันทางเลือกเหนือรายการแทนการวนซ้ำ

ÝεDLm}˜sè

1

Perl 6 , 29 ไบต์

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

ทดสอบมัน

ขยาย:

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

ว้าววันนี้คุณต้องเหนื่อยจริงๆ
Erik the Outgolfer

ฉันป่วยจริง ๆ !
Jonathan Allan

10
ขออภัย! หวังว่าคุณจะดีขึ้นเร็ว ๆ นี้!
Erik the Outgolfer

นอกจากนี้นี่คือบางส่วน 3 ไบต์ฉันจัดการเพื่อถอนออกเล็กน้อยนี้
Erik the Outgolfer


0

APL + WIN, 23 ไบต์

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

คำอธิบาย:

[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

APL ใช้ภาษาถิ่นอะไรได้บ้าง?
Erik the Outgolfer

มันเขียนใน APL + WIN ฉันจะทำให้ชัดเจนในคำตอบในอนาคตใด ๆ
เกรแฮม

ผมเอามาจากคำตอบของคุณที่จะมาแทนที่ของฉัน ↑,/ฉันไม่รู้หน้าที่นี้เลย ขอบคุณ
H.PWiz

@EriktheOutgolfer ฉันคิดว่านี่จะใช้ได้กับ APL ที่ทันสมัย
อดัม



0

Clojure 51 ไบต์

0 การจัดทำดัชนีตัวอย่างเช่นการป้อนข้อมูลผลตอบแทน9256.0

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


0

Pyt , 39 37 ไบต์

1 การจัดทำดัชนี

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

คำอธิบาย:

มันจะคำนวณแต่ละแถวสั้น ๆ หากหมายเลขที่ร้องขออยู่ในแถวนั้นให้ส่งคืน มิฉะนั้นไปที่แถวถัดไป

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.