ลำดับของ Sylvester


32

ลำดับของ Sylvester OEIS A000058เป็นลำดับเลขจำนวนเต็มที่กำหนดดังนี้:

สมาชิกแต่ละคนเป็นผลิตภัณฑ์ของสมาชิกก่อนหน้าทั้งหมดรวมหนึ่ง สมาชิกคนแรกของลำดับคือ 2

งาน

สร้างโปรแกรมที่เล็กที่สุดเท่าที่จะเป็นไปได้ซึ่งใช้ n และคำนวณคำที่ n ของลำดับของ Sylvester ใช้อินพุตอินพุตเอาต์พุตและช่องโหว่มาตรฐาน เนื่องจากผลลัพธ์เติบโตอย่างรวดเร็วคุณไม่ได้คาดหวังที่จะใช้คำใด ๆ ซึ่งผลลัพธ์จะทำให้เกิดการล้นในภาษาที่คุณเลือก

กรณีทดสอบ

คุณสามารถใช้ดัชนีหรือศูนย์ก็ได้ (ที่นี่ฉันใช้การจัดทำดัชนีเป็นศูนย์)

>>0
2
>>1
3
>>2
7
>>3
43
>>4
1807

ปัจจัยใดที่คาดว่าจะได้รับการจัดการ ผลผลิตเติบโตอย่างรวดเร็ว
Geobits

1
@Geobits คุณถูกคาดหวังให้จัดการได้มากเท่าที่ภาษาของคุณสามารถทำได้
Wheat Wizard

เป็นอาร์เรย์ที่เมื่อจัดทำดัชนีด้วยnส่งกลับnthจำนวนของลำดับที่ยอมรับหรือไม่
user6245072

@ user6245072 ไม่ต้องทำดัชนีอาร์เรย์ของคุณเอง
Wheat Wizard

คำตอบ:


26

Brain-Flak , 76 68 58 52 46 ไบต์

<>(()())<>{({}[()])<>({({}[()])({})}{}())<>}<>

ลองออนไลน์!

ใช้ความสัมพันธ์นี้แทน:

formula

ซึ่งได้มาจากความสัมพันธ์นี้แก้ไขจากที่ระบุไว้ในลำดับ:

a(n+1) = a(n) * (a(n) - 1) + 1.

คำอธิบาย

สำหรับเอกสารของสิ่งที่แต่ละคำสั่งไม่ได้โปรดไปที่หน้า GitHub

Brain-Flak มีอยู่สองกองซึ่งฉันจะตั้งชื่อเป็น Stack 1 และ Stack 2 ตามลำดับ

อินพุตถูกเก็บในสแต็ก 1

<>(()())<>             Store 2 in Stack 2.

{                      while(Stack_1 != 0){
  ({}[()])                 Stack_1 <- Stack_1 - 1;
  <>                       Switch stack.
  ({({}[()])({})}{}())     Generate the next number in Stack 2.
  <>                       Switch back to Stack 1.
}

<>                     Switch to Stack 2, implicitly print.

สำหรับอัลกอริธึมการสร้าง:

({({}[()])({})}{}())      Top <- (Top + Top + (Top-1) + (Top-1) + ... + 0) + 1

(                  )      Push the sum of the numbers evaluated in the process:

 {            }               while(Top != 0){
  ({}[()])                        Pop Top, push Top-1    (added to sum)
          ({})                    Pop again, push again  (added to sum)
                              }

               {}             Top of stack is now zero, pop it.
                 ()           Evaluates to 1 (added to sum).

ทางเลือกรุ่น 46- ไบต์

สิ่งนี้ใช้เพียงหนึ่งกอง

({}<(()())>){({}<({({}[()])({})}{}())>[()])}{}

ลองออนไลน์!


1
มีเพียง 10 ไบต์เท่านั้นที่จะแสดงให้เห็นว่าผู้พัฒนาจาวาควรจะมีสมองที่สมบูรณ์
Rohan Jhunjhunwala

1
@RohanJhunjhunwala ฉันกลัวว่ามันจะเป็นไปไม่ได้ ...
Leaky Nun

@LeakyNun มันยังน่าสนใจที่จะคิด Brain Flak มีพลังบางอย่างและน่ารำคาญอย่างมาก
Rohan Jhunjhunwala

5
เวอร์ชั่นสแต็กหนึ่งเวอร์ชั่นยังสแต็กสะอาดอีกด้วย ซึ่งมีแนวโน้มที่จะเป็นจุดสำคัญสำหรับรหัสแบบแยกส่วนในสมองสะเก็ด
ข้าวสาลีตัวช่วยสร้าง

ว้าว. นี่เป็นคำตอบที่น่าประทับใจอย่างยิ่ง
DJMcMayhem

12

เยลลี่ 5 ไบต์

Ḷ߀P‘

สิ่งนี้ใช้การจัดทำดัชนีแบบอิง 0 และคำจำกัดความจากข้อกำหนดท้าทาย

ลองออนไลน์! หรือตรวจสอบกรณีทดสอบทั้งหมด

มันทำงานอย่างไร

Ḷ߀P‘  Main link. Argument: n

Ḷ      Unlength; yield [0, ..., n - 1].
 ߀    Recursively apply the main link to each integer in that range.
   P   Take the product. This yields 1 for an empty range.
    ‘  Increment.

อาฉันลืมว่าผลิตภัณฑ์เปล่าคือ 1
แม่ชีที่รั่ว

12

Hexagony , 27 ไบต์

1{?)=}&~".>")!@(</=+={"/>}*

กางออก:

    1 { ? )
   = } & ~ "
  . > " ) ! @
 ( < / = + = {
  " / > } * .
   . . . . .
    . . . .

ลองออนไลน์!

คำอธิบาย

ลองพิจารณาลำดับb(a) = a(n) - 1และทำการเรียงใหม่เล็กน้อย:

b(a) = a(n) - 1
     = a(n-1)*(a(n-1)-1) + 1 - 1
     = (b(n-1) + 1)*(b(n-1) + 1 - 1)
     = (b(n-1) + 1)*b(n-1)
     = b(n-1)^2 + b(n-1)

ลำดับนี้คล้ายกันมาก แต่เราสามารถเลื่อนการเพิ่มขึ้นไปจนสุดซึ่งเกิดขึ้นเพื่อบันทึกไบต์ในโปรแกรมนี้

ดังนั้นนี่คือซอร์สโค้ดที่มีคำอธิบายประกอบ:

ป้อนคำอธิบายรูปภาพที่นี่
ที่สร้างขึ้นด้วย Timwi ของHexagonyColorer

และนี่คือแผนภาพหน่วยความจำ (สามเหลี่ยมสีแดงแสดงตำแหน่งเริ่มต้นและทิศทางของตัวชี้หน่วยความจำ):

ป้อนคำอธิบายรูปภาพที่นี่
ที่สร้างขึ้นด้วย Timwi ของEsotericIDE

รหัสเริ่มต้นบนเส้นทางสีเทาซึ่งล้อมรอบมุมซ้ายดังนั้นบิตเชิงเส้นเริ่มต้นมีดังต่อไปนี้:

1{?)(
1      Set edge b(1) to 1.
 {     Move MP to edge N.
  ?    Read input into edge N.
   )(  Increment, decrement (no-op).

จากนั้นรหัสจะกระทบ<ซึ่งเป็นสาขาและระบุจุดเริ่มต้น (และสิ้นสุด) ของลูปหลัก ตราบใดที่ขอบNมีค่าเป็นบวกเส้นทางสีเขียวจะถูกดำเนินการ เส้นทางนั้นล้อมรอบกริดสองสามครั้ง แต่จริง ๆ แล้วเป็นเส้นตรง:

""~&}=.*}=+={....(

The .no-ops ดังนั้นรหัสจริงคือ:

""~&}=*}=+={(
""             Move the MP to edge "copy".
  ~            Negate. This is to ensure that the value is negative so that &...
   &           ...copies the left-hand neighbour, i.e. b(i).
    }=         Move the MP to edge b(i)^2 and turn it around.
      *        Multiply the two copies of b(i) to compute b(i)^2.
       }=      Move the MP back to edge b(i) and turn it around.
         +     Add the values in edges "copy" and b(i)^2 to compute
               b(i) + b(i)^2 = b(i+1).
          ={   Turn the memory pointer around and move to edge N.
            (  Decrement.

เมื่อ decrementing นี้จะช่วยลดNการ0เส้นทางสีแดงจะถูกดำเนินการ:

")!@
"     Move MP back to edge b(i) (which now holds b(N)).
 )    Increment to get a(N).
  !   Print as integer.
   @  Terminate the program.

คุณสามารถเรียกใช้ bruteforcer ของคุณในเรื่องนี้?
CalculatorFeline

@CalculatorFeline นักล่าสัตว์เดรัจฉานสามารถทำโปรแกรม 7 ไบต์ได้มากที่สุด (และแม้แต่ที่มีเพียงข้อสันนิษฐานมากมาย) ในเวลาที่เหมาะสม ฉันไม่เห็นว่าสิ่งนี้เป็นไปได้ในระยะไกลใน 7 ไบต์
Martin Ender

ดังนั้น? มีอะไรผิดปกติกับการลอง?
CalculatorFeline

@CalculatorFeline Laziness สัตว์เดรัจฉานเดรัจฉานต้องการการปรับแต่งเล็กน้อยแบบแมนนวลที่ฉันไม่สามารถทำอะไรได้เลยเพื่อหาโอกาส 0 ที่จะได้พบกับบางสิ่งบางอย่าง สคริปต์บางเวอร์ชันอยู่บน GitHub แต่คนอื่น ๆ มีอิสระที่จะไปได้
Martin Ender

และฉันจะทำอย่างไร
CalculatorFeline

9

J, 18 14 12 ไบต์

รุ่นนี้ต้องขอบคุณ randomra ฉันจะพยายามเขียนคำอธิบายโดยละเอียดในภายหลัง

0&(]*:-<:)2:

J, 14 ไบต์

รุ่นนี้ต้องขอบคุณไมล์ ใช้คำวิเศษณ์พลัง^:แทนวาระดังต่อไปนี้ คำอธิบายเพิ่มเติมที่จะมา

2(]*:-<:)^:[~]

J, 18 ไบต์

2:`(1+*/@$:@i.)@.*

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

ตัวอย่าง

   e =: 2:`(1+*/@$:@i.)@.*
   e 1
3
   e 2
7
   e 3
43
   e 4
1807
   x: e i. 10
2 3 7 43 1807 3263443 10650056950807 113423713055421862298779648 12864938683278674737956996400574416174101565840293888 1655066473245199944217466828172807675196959605278049661438916426914992848    91480678309535880456026315554816
   |: ,: x: e i. 10
                                                                                                        2
                                                                                                        3
                                                                                                        7
                                                                                                       43
                                                                                                     1807
                                                                                                  3263443
                                                                                           10650056950807
                                                                              113423713055421862298779648
                                                    12864938683278674737956996400574416174101565840293888
165506647324519994421746682817280767519695960527804966143891642691499284891480678309535880456026315554816

คำอธิบาย

นี่เป็นวาระที่มีลักษณะเช่นนี้:

           ┌─ 2:
           │    ┌─ 1
       ┌───┤    ├─ +
       │   └────┤           ┌─ / ─── *
── @. ─┤        │     ┌─ @ ─┴─ $:
       │        └─ @ ─┴─ i.
       └─ *

(สร้างโดยใช้(9!:7)'┌┬┐├┼┤└┴┘│─'แล้ว5!:4<'e')

เน่าเฟะ:

       ┌─ ...
       │
── @. ─┤
       │
       └─ *

ใช้กิ่งด้านบนเป็นคำคุณศัพท์Gและด้านล่างเป็นตัวเลือกFนี่คือ:

e n     <=>     ((F n) { G) n

สิ่งนี้ใช้ฟังก์ชั่นค่าคงที่2:เมื่อ0 = * nนั่นคือเมื่อสัญญาณเป็นศูนย์ (ดังนั้นจึงnเป็นศูนย์) มิฉะนั้นเราจะใช้ส้อมนี้:

  ┌─ 1
  ├─ +
──┤           ┌─ / ─── *
  │     ┌─ @ ─┴─ $:
  └─ @ ─┴─ i.

ซึ่งเป็นหนึ่งในซีรีย์ยอดนิยมต่อไปนี้:

            ┌─ / ─── *
      ┌─ @ ─┴─ $:
── @ ─┴─ i.

การย่อยสลายเพิ่มเติมนี้เป็นผลิตภัณฑ์ ( */) มากกว่าการอ้างอิงตนเอง ( $:) ในช่วง ( i.)


2
นอกจากนี้คุณยังสามารถใช้คำวิเศษณ์กำลังจะได้รับ2(]*:-<:)^:[~]14 ไบต์โดยใช้สูตรและa(0) = 2 a(n+1) = a(n)^2 - (a(n) - 1)ในการคำนวณค่า2ที่มากขึ้นจุดเริ่มต้นจะต้องทำเครื่องหมายเป็นจำนวนเต็มแบบขยาย
ไมล์

ทั้งสองวิธีแก้ปัญหานั้นดีมาก ฉันคิดว่าฉันไม่รู้จักv`$:@.uรูปแบบการเรียกซ้ำ ฉันมักจะใช้^:vรูปแบบที่มักจะซับซ้อนกว่า @ ไมล์ฉันไม่เคยใช้(]v)อุบาย ฉันใช้เวลา 5 นาทีเพื่อทำความเข้าใจ
randomra

1
เพื่อความสมบูรณ์ของการวนลูปแบบที่ 3 (14 ไบต์โดยใช้วิธีไมล์): 2(]*:-<:)~&0~](หรือ2:0&(]*:-<:)~]) และรวมพวกเขา13 ]0&(]*:-<:)2:ไบต์
randomra

12 0&(]*:-<:)2:ไบต์: (ขออภัยฉันไม่ควรเล่นกอล์ฟในความคิดเห็น)
randomra

@randomra นั่นเป็นการใช้งานพันธบัตรที่ประณีตจริงๆ ฉันต้องอ่านหน้านี้เพื่อค้นหาว่าเกิดอะไรขึ้นตั้งแต่ปกติใคร ๆ ก็คิดว่าคำกริยาตรงกลางได้รับการโต้เถียงสามครั้ง
ไมล์

9

Perl 6 , 24 ไบต์

{(2,{1+[*] @_}...*)[$_]}
{(2,{1+.²-$_}...*)[$_]}

คำอธิบาย

# bare block with implicit parameter 「$_」
{
  (
    # You can replace 2 with 1 here
    # so that it uses 1 based indexing
    # rather than 0 based
    2,

    # bare block with implicit parameter 「@_」
    {
      1 +

      # reduce the input of this inner block with 「&infix:<*>」
      # ( the input is all of them generated when using a slurpy @ var )
      [*] @_

      # that is the same as:
      # 「@_.reduce: &infix:<*>」
    }

    # keep calling that to generate more values until:
    ...

    # forever
    *

  # get the value as indexed by the input
  )[ $_ ]
}

การใช้งาน:

my &code = {(2,{1+[*] @_}...*)[$_]}

say code 0; # 2
say code 1; # 3
say code 2; # 7
say code 3; # 43
say code 4; # 1807

# you can even give it a range
say code 4..7;
# (1807 3263443 10650056950807 113423713055421844361000443)

say code 8;
# 12864938683278671740537145998360961546653259485195807
say code 9;
# 165506647324519964198468195444439180017513152706377497841851388766535868639572406808911988131737645185443
say code 10;
# 27392450308603031423410234291674686281194364367580914627947367941608692026226993634332118404582438634929548737283992369758487974306317730580753883429460344956410077034761330476016739454649828385541500213920807

my $start = now;
# how many digits are there in the 20th value
say chars code 20;
# 213441

my $finish = now;
# how long did it take to generate the values up to 20
say $finish - $start, ' seconds';
# 49.7069076 seconds

อาเรย์ชิ้นด้วย$_หรือไม่ คาถานี้คืออะไร?
Zaid


7

Java 7, 46 42 ไบต์

int f(int n){return--n<0?2:f(n)*~-f(n)+1;}

ใช้การจัดทำดัชนี 0 ด้วยสูตรปกติ ฉันสลับn*n-nไปn*(n-1)มาเนื่องจาก Java ไม่ได้มีผู้ให้บริการไฟฟ้าที่สะดวกและการf()โทรก็ใช้เวลานาน


3
f(n)*~-f(n)ควรทำงาน.
เดนนิส

1
ฉันจะลืมเกี่ยวกับเคล็ดลับที่ทุกครั้งได้อย่างไร ถ้านั่นไม่ได้อยู่ในหน้าเคล็ดลับก็มั่นใจได้ว่าจะเป็น
Geobits

2
return--n<0บันทึกอีกหนึ่งไบต์
เดนนิส

2
แต่นักพัฒนาจาวาควรจะไปอยู่แล้วสมองสะเก็ดระเบิด
แม่ชีที่รั่ว



6

SILOSขนาด 60 ไบต์

readIO 
p = 2
lblL
r = p
r + 1
p * r
i - 1
if i L
printInt r

ลองออนไลน์!

ท่าเรือคำตอบของฉันใน C


ยาย: D ในที่สุดก็เป็นนักกอล์ฟที่ไซโล, สิ่งที่น่าสนใจก็คือว่ามันเต้น Scala :)
Rohan Jhunjhunwala

5

Brain-Flak , 158 154 ไบต์

Leaky Nun ให้ฉันเอาชนะที่นี่

({}<(()())>){({}[()]<<>(())<>([]){{}<>({}<<>(({}<>))><>)<>({<({}[()])><>({})<>}{})<>{}([])}{}<>({}())([]){{}({}<>)<>([])}{}<>>)}{}([][()]){{}{}([][()])}{} 

ลองออนไลน์!

คำอธิบาย

ใส่สองภายใต้อินพุต a (0)

({}<(()())>) 

ในขณะที่อินพุตมากกว่าศูนย์ลบหนึ่งจากอินพุตและ ...

{
({}[()]

เงียบ...

<

วางบนสแต็กอื่นเพื่อทำหน้าที่เป็นตัวเร่งปฏิกิริยาสำหรับการคูณ <> (()) <>

ในขณะที่กองไม่ว่างเปล่า

 ([])
 {
  {}

ย้ายด้านบนของรายการและคัดลอก

  <>({}<<>(({}<>))><>)

คูณตัวเร่งปฏิกิริยาโดยการคัดลอก

  <>({<({}[()])><>({})<>}{})<>{}
  ([])
 }
 {}

เพิ่มหนึ่ง

 <>({}())

ย้ายลำดับกลับไปที่สแต็กที่เหมาะสม

 ([])
 {
 {}
 ({}<>)<>
 ([])
 }
 {}
 <>
>)
}{}

ลบทั้งหมดยกเว้นรายการด้านล่าง (เช่นหมายเลขสุดท้ายที่สร้างขึ้น)

([][()])
{
{}
{}
([][()])
}
{}



5

R, 44 42 41 ไบต์

บันทึก 2 ไบต์ด้วย JDL

1 ไบต์บันทึกด้วย user5957401

f=function(n)ifelse(n,(a=f(n-1))^2-a+1,2)

1
มันไม่ชัดเจนจากงบปัญหา แต่ตราบใดที่nมีการประกันเพื่อไม่เป็นเชิงลบนั้นอยู่ในสภาพที่สามารถลดลงได้จากเพียงแค่n>0 n
JDL

@JDL ดีมาก! ขอบคุณมาก!
มี่

f(n-1)คือ 6 ไบต์ ฉันคิดว่าคุณบันทึกไบต์ด้วยการกำหนดให้บางอย่าง ieifelse(n,(a=f(n-1))^2-a+1,2)
user5957401

5

Oasis , 4 ไบต์ (ไม่ใช่การแข่งขัน)

อาจเป็นภาษาสุดท้ายของฉันจากตระกูลนักกอล์ฟ! ไม่ใช่การแข่งขันเนื่องจากภาษาโพสต์ความท้าทาย

รหัส:

²->2

ทางเลือกในการแก้ปัญหาด้วยZwei :

<*>2

รุ่นขยาย:

a(n) = ²->
a(0) = 2

คำอธิบาย:

²    # Stack is empty, so calculate a(n - 1) ** 2.
 -   # Subtract, arity 2, so use a(n - 1).
  >  # Increment by 1.

ใช้การเข้ารหัสCP-1252 ลองออนไลน์!


ภาษาการเล่นกอล์ฟครั้งสุดท้ายหรือไม่ คุณจะไม่ทำอะไรอีกหรือ D:
Conor O'Brien

@ ConorO'Brien อาจเป็นไปได้ว่าตอนนี้ฉันไม่มีไอเดียแล้ว :(
Adnan

ก่อนที่จะดูความท้าทายนี้ฉันได้b<*>2ใช้a(n-1)*(a(n-1)+1)-1
Zwei

@Zwei เรียบร้อยมาก! จริงๆคุณสามารถออกจากbที่จะกรอกโดยอัตโนมัติ (แทนที่จะใส่) :)
Adnan

1
ใช่ฉันสังเกตเห็นว่าหลังจากโพสต์ ฉันแปลกใจว่าภาษานี้ใช้งานได้ดีเพียงใดแม้ว่ามันจะถูกออกแบบมาสำหรับการเรียงลำดับ
Zwei

3

Python ขนาด38 36 ไบต์

2 ไบต์ขอบคุณเดนนิส

f=lambda n:0**n*2or~-f(n-1)*f(n-1)+1

ไอเดียมัน!

ใช้ความสัมพันธ์นี้ดัดแปลงจากสิ่งที่ให้ไว้ในลำดับแทน:

a(n+1) = a(n) * (a(n) - 1) + 1

คำอธิบาย

0**n*2ส่งคืน2เมื่อใดn=0และ0อย่างอื่นเพราะ0**0ถูกกำหนดให้เป็น1Python


3

Cheddar , 26 ไบต์

n g->n?g(n-=1)**2-g(n)+1:2

ลองออนไลน์!

สวยสำนวน

คำอธิบาย

n g ->    // Input n, g is this function
  n ?     // if n is > 1
    g(n-=1)**2-g(n)+1   // Do equation specified in OEIS
  : 2     // if n == 0 return 2

ตอนนี้ 4 ครั้ง (เกือบ)
Leun Nun

ทำไมคุณถึงลบลิงค์ TIO?
Leun Nun

@LeakyNun โอ้คุณต้องได้รับการแก้ไขในขณะที่ฉันเป็น
Downgoat





2

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

²_’
2Ç¡

ลองออนไลน์!

ใช้ความสัมพันธ์นี้ในลำดับแทน: a(n+1) = a(n)^2 - a(n) + 1

คำอธิบาย

2Ç¡   Main chain, argument in input

2     Start with 2
  ¡   Repeat as many times as the input:
 Ç        the helper link.


²_’   Helper link, argument: z
²     z²
  ’   z - 1
 _    subtraction, yielding z² - (z-1) = z² - z + 1

2

C, 46 ไบต์

s(n,p,r){for(p=r=2;n-->0;p*=r)r=p+1;return r;}

ไอเดียมัน!

ใช้pเป็นที่เก็บข้อมูลชั่วคราวของผลิตภัณฑ์

โดยทั่วไปฉันกำหนดลำดับสองp(n)และr(n)ที่และr(n)=p(n-1)+1p(n)=p(n-1)*r(n)

r(n) เป็นลำดับที่ต้องการ


1
เหตุผลใดที่คุณไม่ได้ใช้ความสัมพันธ์แบบเดียวกันกับคำตอบของ Python ที่นี่ ที่ควรจะสั้นกว่ามาก ...
Dennis

@Dennis นี่น่าสนใจกว่านี้
n' Leaky Nun

@Dennis และคำตอบนี้สามารถรังเพลิง
รั่วนูน

2

R, 50 46 44 ไบต์

    n=scan();v=2;if(n)for(i in 1:n){v=v^2-v+1};v

แทนที่จะติดตามลำดับทั้งหมดเราเพียงแค่ติดตามผลิตภัณฑ์ซึ่งเป็นไปตามกฎการอัพเดทสมการกำลังสองตราบเท่าที่n> 1 n> 0 (ลำดับนี้ใช้ "เริ่มต้นที่หนึ่งศูนย์")

การใช้การเริ่มต้นที่ศูนย์การประชุมบันทึกสองไบต์เนื่องจากเราสามารถใช้ถ้า (n) มากกว่าถ้า (n> 1)


2

แมงกะพรุนขนาด 13 ไบต์

p
\Ai
&(*
><2

ลองออนไลน์!

คำอธิบาย

เริ่มจากล่างขึ้นบน:

(*
<

f(x) = (x-1)*xนี่คือเบ็ดซึ่งกำหนดฟังก์ชั่น

&(*
><

g(x) = (x-1)*x+1นี้ประกอบด้วยเบ็ดก่อนหน้านี้ด้วยฟังก์ชั่นที่เพิ่มขึ้นเพื่อที่จะช่วยให้เรามีฟังก์ชั่น

\Ai
&(*
><

ในที่สุดนี้จะสร้างฟังก์ชั่นhซึ่งเป็นซ้ำของฟังก์ชั่นก่อนหน้านี้gหลาย ๆ ครั้งตามที่ได้รับจากการป้อนจำนวนเต็ม

\Ai
&(*
><2

2และในที่สุดเราใช้ซ้ำนี้ไปยังค่าเริ่มต้น pที่ด้านบนเพียงแค่พิมพ์ผล

ทางเลือก (เช่น 13 ไบต์)

p
>
\Ai
(*
>1

สิ่งนี้จะลดการเพิ่มขึ้นจนสุด


2

C, 43 , 34 , 33 ไบต์

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

F(n){return--n?n=F(n),n*n-n+1:2;}

ทดสอบหลัก:

int main() {
  printf("%d\n", F(1));
  printf("%d\n", F(2));
  printf("%d\n", F(3));
  printf("%d\n", F(4));
  printf("%d\n", F(5));
}


2

Mathematica, 19 ไบต์

Nest[#^2-#+1&,2,#]&

หรือ 21 ไบต์:

Array[#0,#,0,1+1##&]&

Arrayแก้ปัญหาคือมีมนต์ขลัง เลวร้ายเกินไป##0ไม่ใช่เรื่อง ;)
Martin Ender


1

อันที่จริง , 14 12 ไบต์

สิ่งนี้ใช้การจัดทำดัชนี 0 ยินดีต้อนรับคำแนะนำการเล่นกอล์ฟ ลองออนไลน์!

2#,`;πu@o`nF

Ungolfing:

2#              Start with [2]
  ,`     `n     Take 0-indexed input and run function (input) times
    ;           Duplicate list
     πu         Take product of list and increment
       @o       Swap and append result to the beginning of the list
           F    Return the first item of the resulting list

1

GolfScript , 12 10 ไบต์

2 ไบต์ขอบคุณเดนนิส

~2\{.(*)}*

ลองออนไลน์!

a(n) = a(n-1) * (a(n-1)-1) + 1การใช้ประโยชน์


2
(สั้นสำหรับ1-; สั้นสำหรับ) 1+
เดนนิส

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