ความแตกต่างของกำลังสองของผลบวก


37

ค้นหาความแตกต่างระหว่างผลรวมของกำลังสองกับผลรวมของกำลังสอง

นี่คือการแสดงทางคณิตศาสตร์:

(n)2n2

โปรแกรม / วิธีการของคุณควรใช้สองอินพุตซึ่งเป็นขีด จำกัด ล่างและบนของช่วงและรวม ขีด จำกัด จะเป็นจำนวนเต็มทั้งจำนวนที่สูงกว่า 0

โปรแกรม / วิธีการของคุณควรส่งคืนคำตอบ

คุณอาจใช้ฐานใดก็ได้ที่คุณต้องการ แต่โปรดระบุคำตอบของคุณว่าคุณใช้ฐานใด

กรณีทดสอบ (ฐาน 10)

5,9      970
91,123   12087152
1,10     2640

นี่เป็นรหัสปกติของกอล์ฟดังนั้นคำตอบที่สั้นกว่าจึงดีกว่า


11
ฉันใช้เวลาสักพักกว่าจะรู้ว่าอินพุตเป็นจุดสิ้นสุดของช่วง
Brad Gilbert b2gills

@ BradGilbertb2gills แก้ไขเพื่อความชัดเจน
george

มันง่ายกว่าที่คิดไหม?
แมว

@cat คุณหมายถึงอะไร ใช่คณิตศาสตร์เป็นเรื่องของ Alevel ที่เรียบง่าย แต่มันก็ขึ้นอยู่กับว่าคุณเล่นกอล์ฟอย่างไร
george

@george คำถามและคำตอบมากมายทำให้ดูเหมือนงานมาก แต่ไม่ใช่
cat

คำตอบ:


23

Python 2, 43 ไบต์

f=lambda a,b,s=0:b/a and 2*a*s+f(a+1,b,s+a)

ทดสอบบนIdeone

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

เรียกใช้ฟังก์ชันที่กำหนดไว้ในข้อกำหนดกรัม (A, B) เรามีสิ่งนั้น

กำหนดฟังก์ชั่นf (x, y, s)ซ้ำดังนี้

โดยการใช้ความสัมพันธ์ที่เกิดซ้ำของf (a, b, 0)รวมb - aครั้งเราสามารถแสดงให้เห็นว่า

นี่คือฟังก์ชันfของการนำไปใช้ ในขณะที่b/aผลตอบแทนที่ไม่ใช่ศูนย์จำนวนเต็มต่อไปนี้รหัสandจะถูกดำเนินการดังนั้นการดำเนินการตามคำนิยาม recursive ของฉ

เมื่อb/aถึง0เรามีที่ข> aและผลตอบแทนแลมบ์ดาเท็จ = 0ดังนั้นการดำเนินการกรณีฐานของความหมายของฉ


อ่าโอเค. คุณสามารถอธิบายวิธีการของคุณได้ไหม?
george

ฉันจะ แต่ตอนนี้ฉันกำลังพยายามตีกอล์ฟเพิ่มอีกนิด
Dennis

ขอบคุณสำหรับสูตร ฉันเดาว่าฉันไม่เคยเห็นแบบนี้มาก่อนเพราะเราไม่ได้ครอบคลุมผลรวมของซีรีส์เช่นนั้นที่โรงเรียน น่าสนใจทีเดียว!
george

2
@george ฉันได้อธิบายเสร็จแล้ว
Dennis

อยากบอกเราอีกสักนิดว่าในโลกความคิดที่จะนิยาม f เข้ามาในใจคุณได้อย่างไร! แรงจูงใจ! ฉันสนใจอย่างแท้จริง
Musa Al-hassy

15

MATL , 9 ไบต์

&:&*XRssE

ลองออนไลน์!

คำอธิบาย

&:   % Inclusive range between the two implicit inputs
&*   % Matrix of all pair-wise products
XR   % Upper triangular part of matrix, without the diagonal
ss   % Sum of all elements of the matrix
E    % Multiply by 2. Implicit display

ตัวอย่าง

นี่คือผลลัพธ์บางส่วนของแต่ละบรรทัดสำหรับอินพุต5และ9:

  1. &:

    5 6 7 8 9
    
  2. &:&*

    25 30 35 40 45
    30 36 42 48 54
    35 42 49 56 63
    40 48 56 64 72
    45 54 63 72 81
    
  3. &:&*XR

    0 30 35 40 45
    0  0 42 48 54
    0  0  0 56 63
    0  0  0  0 72
    0  0  0  0  0
    
  4. &:&*XRss

    485
    
  5. &:&*XRssE

    970
    

7
ฉันชอบที่จะเห็นผลลัพธ์บางส่วน พวกเขาช่วยด้วยการทำความเข้าใจโปรแกรม ขอบคุณสำหรับการรวมพวกเขา!
DanTheMan

10

เยลลี่, 9 8 ไบต์

rµS²_²S$

ลองออนไลน์!

r         inclusive range from first input to second input
 µ        pass the range to a new monadic chain
  S       the sum
   ²      squared
    _     minus...
     ²S$  the squares summed

ขอบคุณFryAmTheEggmanสำหรับไบต์!


3
ครั้งหนึ่งเยลลี่สามารถอ่านได้จริงมาก
อดัม

ฉันสามารถแยกสิ่งนี้เป็นคำตอบได้ไหม?
Leun Nun

@LeakyNun มันหมายความว่าอะไร?
Doorknob

นี้
Leun Nun

6
ต่างหูที่ดี: S²_²S
Thomas Weller

10

Python 2, 45 ไบต์

lambda a,b:(a+~b)*(a-b)*(3*(a+b)**2+a-b-2)/12

โซลูชันฟอร์มปิด - ไม่ใช่สั้นที่สุด แต่ฉันคิดว่ามันควรค่าแก่การโพสต์

คำอธิบาย

อนุญาตp(n)เป็นn TH จำนวนเสี้ยมตารางและt(n)เป็นn TH จำนวนรูปสามเหลี่ยม จากนั้นสำหรับnตลอดช่วงa , ... , b :

  • ∑n = t(b)-t(a-1)และ
  • ∑n² = p(b) - p(a-1)
  • ดังนั้น (Σn) ²-Σn² (t(b)-t(a-1))² - (p(b) - p(a-1))=

นิพจน์นี้ลดขนาดลงในโค้ด


สวัสดีคุณอธิบายสมการของคุณได้ไหม หลามรุ่นของฉันคือ 16 ไบต์อีกต่อไปและฉันไม่สามารถหาวิธีที่คุณได้รับสมการของคุณ
george

1
@george อนุญาตp(n)เป็นnTH จำนวนเสี้ยมตารางและt(n)เป็นnTH จำนวนรูปสามเหลี่ยม (t(b)-t(a-1))^2 - (p(b) - p(a-1))แล้วนี้เป็นรุ่นที่เรียบง่ายของ
Martin Ender

@MartinEnder ดังนั้นนี่เป็นสูตรที่แน่นอนที่ฉันใช้ แต่ Sp3000 ได้ทำให้มันง่ายขึ้นในแบบที่ฉันไม่เข้าใจ สคริปต์ python ของฉันคือ: (b * - ~ ba * ~ -a) ** 2 / 4- (b * - ~ b * (2 * b + 1) -a * ~ -a * (2 * a-1) ) / 6 หากเป็นการใช้งานใด ๆ ฉันเล่นกอล์ฟให้มากที่สุดเท่าที่จะทำได้ทั้งสองสูตร
george

@george บางครั้งด้วยปัญหาเช่นนี้วิธีที่ง่ายที่สุดคือการนำWolfram | Alphaไปทำส่วนที่น่าเบื่อจากนั้นตรวจสอบอีกครั้งเพื่อให้แน่ใจว่าถูกต้อง พูดตามตรงฉันไม่คิดว่าจะดึง(a-b-1)ปัจจัยออกมา(b*(b+1)*(2b+1)-a*(a-1)*(2a-1))/6ด้วยตัวเอง
Sp3000

@ Sp3000 นั่นเป็นวิธีที่ยอดเยี่ยมที่จะทำ ฉันจะลองสิ่งนั้นในอนาคต
george

6

05AB1E, 8 ไบต์

ŸDOnsnO-

อธิบาย

ŸD       # range from a to b, duplicate
  On     # sum and square first range
    s    # swap top 2 elements
     nO  # square and sum 2nd range
       - # take difference

ลองออนไลน์


05AB1E เป็นรุ่น Jelly ROT13 หรือเปล่า ทดแทน r โดยŸ, µ โดย D, S โดย O, ²โดย n, _ by s และ $ by -
โธมัสเวลเลอร์

4
@ThomasWeller: จริง ๆ แล้วมันต่างกัน ออฟเซ็ตทั่วไประหว่าง "ฟังก์ชั่น" บางอย่างน่าจะเป็นเรื่องบังเอิญ เยลลี่เป็นภาษาเงียบ ๆ เกี่ยวกับฟังก์ชั่นการผูกมัด (afaik) ในขณะที่ 05AB1E เป็นภาษาสแต็ก
Emigna

6

Mathematica ขนาด 21 ไบต์

Tr[x=Range@##]^2-x.x&

ฟังก์ชันที่ไม่มีชื่อซึ่งรับสองอาร์กิวเมนต์และส่งคืนความแตกต่าง การใช้งาน:

Tr[x=Range@##]^2-x.x&[91, 123]
(* 12087152 *)

มีสามลูกกอล์ฟเล็ก ๆ (และมาตรฐานที่เป็นธรรม) เทคนิคที่นี่:

  • ##Rangeแสดงให้เห็นถึงข้อโต้แย้งทั้งสองครั้งเพื่อให้เราสามารถใช้คำนำหน้าสัญกรณ์ Range@##เป็นการจดชวเลขRange[##]ซึ่งจะขยายRange[a, b]และมอบช่วงครอบคลุมตามที่เราต้องการ
  • Trสำหรับร่องรอยTotalแต่ใช้มันในเวกเตอร์เวกเตอร์ก็สรุปว่าประหยัดกว่าสามไบต์
  • x.xTr[x^2]เป็นสินค้าที่มีจุดประหยัดสี่ไบต์มากกว่า

จะVarianceช่วยได้อย่างไร
Leun Nun

@LeakyNun ฉันไม่เห็นว่าเพราะหนึ่งในสองคำในVarianceนั้นหารด้วยnและอีกคำด้วยn^2และฉันไม่เห็นวิธีที่ง่ายในการยกเลิกการแยกเหล่านั้น
Martin Ender

1
Tr@#^2-#.#&@*Rangeมีขนาด 18 ไบต์เท่านั้น
Misha Lavrov

@MishaLavrov เรียบร้อย! รู้สึกอิสระที่จะทำให้มันเป็นคำตอบที่แยกจากกัน :)
Martin Ender

5

เขาวงกต , 28 24 ไบต์

?:?:}+=-:(:(#{:**+**#2/!

ลองออนไลน์!

คำอธิบาย

เนื่องจากลูปมีแนวโน้มที่จะมีราคาแพงในเขาวงกตฉันคิดว่าสูตรที่ชัดเจนควรสั้นที่สุดเนื่องจากมันสามารถแสดงเป็นรหัสเชิงเส้นได้

Cmd Explanation                 Stacks [ Main | Aux ]
?   Read M.                     [ M | ]
:   Duplicate.                  [ M M | ]
?   Read N.                     [ M M N | ]
:   Duplicate.                  [ M M N N | ]
}   Move copy to aux.           [ M M N | N ]
+   Add.                        [ M (M+N) | N ]
=   Swap tops of stacks.        [ M N | (M+N) ]
-   Subtract.                   [ (M-N) | (M+N) ]
:   Duplicate.                  [ (M-N) (M-N) | (M+N) ]
(   Decrement.                  [ (M-N) (M-N-1) | (M+N) ]
:   Duplicate.                  [ (M-N) (M-N-1) (M-N-1) | (M+N) ]
(   Decrement.                  [ (M-N) (M-N-1) (M-N-2) | (M+N) ]
#   Push stack depth.           [ (M-N) (M-N-1) (M-N-2) 3 | (M+N) ]
{   Pull (M+N) over from aux.   [ (M-N) (M-N-1) (M-N-2) 3 (M+N) | ]
:   Duplicate.                  [ (M-N) (M-N-1) (M-N-2) 3 (M+N) (M+N) | ]
*   Multiply.                   [ (M-N) (M-N-1) (M-N-2) 3 ((M+N)^2) | ]
*   Multiply.                   [ (M-N) (M-N-1) (M-N-2) (3*(M+N)^2) | ]
+   Add.                        [ (M-N) (M-N-1) (3*(M+N)^2 + M - N - 2) | ]
*   Multiply.                   [ (M-N) ((M-N-1)*(3*(M+N)^2 + M - N - 2)) | ]
*   Multiply.                   [ ((M-N)*(M-N-1)*(3*(M+N)^2 + M - N - 2)) | ]
#   Push stack depth.           [ ((M-N)*(M-N-1)*(3*(M+N)^2 + M - N - 2)) 1 | ]
2   Multiply by 10, add 2.      [ ((M-N)*(M-N-1)*(3*(M+N)^2 + M - N - 2)) 12 | ]
/   Divide.                     [ ((M-N)*(M-N-1)*(3*(M+N)^2 + M - N - 2)/12) | ]
!   Print.                      [ | ]

จากนั้นตัวชี้คำสั่งจะไปถึงจุดจบและจะต้องหมุน เมื่อพบตอนนี้/จะพยายามหารด้วยศูนย์ (เนื่องจากด้านล่างของสแต็กเต็มไปด้วยศูนย์โดยปริยาย) ซึ่งจะสิ้นสุดโปรแกรม


4

Haskell, 34 ไบต์

a#b=sum[a..b]^2-sum(map(^2)[a..b])

ตัวอย่างการใช้งาน: ->91 # 12312087152

ไม่มีอะไรจะอธิบาย


3

Matlab, 30 29 28 ไบต์

การใช้ความคิดของ Suever normทำให้เรามีข้อมูลน้อยลง 2 ไบต์

@(x,y)sum(x:y)^2-norm(x:y)^2

รุ่นเก่า (ง่าย):

@(x,y)sum(x:y)^2-sum((x:y).^2)

3

Octave, 27 23 ไบต์

@(x,y)sum(z=x:y)^2-z*z'

สร้างฟังก์ชั่นที่ไม่ระบุชื่อansที่รับสองอินพุต:ans(lower, upper)

การสาธิตออนไลน์

คำอธิบาย

สร้างเวกเตอร์แถวจากxไปy(รวม) zและเก็บไว้ใน จากนั้นเราจะรวมองค์ประกอบทั้งหมดที่ใช้sumและตารางมัน ( ^2) ในการคำนวณหาผลรวมของกำลังสองเราทำการคูณเมทริกซ์ระหว่างแถวเวกเตอร์กับทรานสโพส สิ่งนี้จะทำให้แต่ละองค์ประกอบเป็นสองส่วนได้อย่างมีประสิทธิภาพและสรุปผลลัพธ์ จากนั้นเราลบทั้งสอง


3

Java, 84 77 ตัวอักษร, 84 77 ไบต์

มีขนาดเล็กลง 7 ไบต์เนื่องจาก Martin Ender และ FryAmTheEggMan ขอบคุณ

public int a(int b,int c){int e=0,f=0;for(;b<=c;e+=b,f+=b*b++);return e*e-f;}

ใช้กรณีทดสอบสามข้อในโพสต์ต้นฉบับ: http://ideone.com/q9MZSZ

Ungolfed:

public int g(int b, int c) {
    int e = 0, f = 0;
    for (; b <= c; e += b, f += b * b++);
    return e*e-f;
}

กระบวนการนี้ค่อนข้างอธิบายตนเอง ฉันได้ประกาศตัวแปรสองตัวเพื่อเป็นตัวแทนของผลรวมของกำลังสองและผลรวมของกำลังสอง ในที่สุดฉันกลับความแตกต่างที่คำนวณได้


ยินดีต้อนรับสู่ PPCG! คุณสามารถบันทึก byte ได้โดยใส่ลง++ไปf+=b*b++(เพื่อให้คุณสามารถออกจากช่องที่สามของช่องforว่าง) และคุณไม่จำเป็นต้องใส่สี่เหลี่ยมeก่อนที่จะส่งคืน (เช่นทำreturn e*e-f)
Martin Ender

จริงๆแล้วแทนที่จะทิ้งช่องที่สามของช่องforว่างไว้ให้ย้ายเข้าไปที่f+=b*b++นั่นเพื่อให้คุณสามารถบันทึกได้ทั้งเครื่องหมายอัฒภาคและเครื่องหมายวงเล็บ
Martin Ender

เยี่ยมมาก @MartinEnder ขอบคุณ :)
Mario Ishac

ตามสิ่งที่มาร์ตินมีอยู่ในใจนอกจากนี้ดูเหมือนว่าจะเป็นบิตสั้น
FryAmTheEggman

1
เห็นได้ชัดว่าความคิดเห็นล่าสุดของฉันไม่ถูกต้อง จริงๆแล้วมันเป็นส่วนพิเศษของไวยากรณ์ Java: คำสั่งสุดท้ายของ for เป็นจริงคำสั่งชนิดพิเศษซึ่งเรียกว่ารายการคำสั่งการแสดงออก คำสั่งพิเศษนี้สามารถมีมากกว่าหนึ่งคำสั่งที่เข้าร่วมโดยเครื่องหมายจุลภาค ดู14.14.1 (คุณจะต้องไปที่นั่นด้วยตัวเองฉันไม่สามารถหาลิงก์ที่แม่นยำยิ่งขึ้น) ของข้อกำหนดภาษาได้
FryAmTheEggman


3

JavaScript (ES6), 50 37 ไบต์

f=(n,m,s=0)=>n>m?0:2*n*s+f(n+1,m,n+s)

ตอนนี้เป็นพอร์ตของโซลูชัน Python ของ @ Dennis ♦


ลองใช้n=>m=>eval(`for(s=t=0;n<=m;t+=n++)s+=n*n;t*t-s`)
Mama Fun Roll

@MamaFunRoll ในทางกลับกันฉันสามารถลองแก้ปัญหา Python ของเดนนิส♦ ...
Neil

3

ตัวคูณ 48 ไบต์

[ [a,b] [ [ sq ] map sum ] [ sum sq ] bi - abs ]

ฟังก์ชั่นที่ไม่ระบุชื่อ

[ 
  [a,b] ! a range from a to b 
  [ 
    [ sq ] map sum ! anonymous function: map sq over the range and sum the result 
  ] 
  [ sum sq ] ! the same thing, in reverse order
  bi - abs   ! apply both anon funcs to the range, subtract them and abs the result
]

3

Haskell, 36 ไบต์

m#n=sum[2*i*j|i<-[m..n],j<-[i+1..n]]

λ> m # n = sum [ 2*i*j | i <- [m..n], j <- [i+1..n] ]
λ> 5 # 9
970
λ> 91 # 123
12087152
λ> 1 # 10
2640

สังเกตได้ว่า

(Σk=ม.nk)2-Σk=ม.nk2==Σk1=ม.nΣk2=ม.k2k1nk1k2=Σk1=ม.nΣk2=k1+1n2k1k2

1
คุณไม่จำเป็นต้อง parens i+1รอบ
ข้าวสาลี Wizard

2
นอกจากนี้หากคุณต้องการที่จะพูดคุยและ Haskell Haskell กอล์ฟคุณสามารถเข้าร่วมกับเราในห้องสนทนา
ข้าวสาลี Wizard

3

Perl 6 ,  36 32  31 ไบต์

{([+] $_=@_[0]..@_[1])²-[+] $_»²}
{([+] $_=$^a..$^b)²-[+] $_»²}
{[+]($_=$^a..$^b)²-[+] $_»²}

ทดสอบมัน

คำอธิบาย:

{ # bare block with placeholder parameters $a and $b

  [+](# reduce with &infix:<+>
      # create a range, and store it in $_
      $_ = $^a .. $^b
  
  -
  [+] # reduce with &infix:<+>
    # square each element of $_ ( possibly in parallel )
    $_»²
}

ทดสอบ:

#! /usr/bin/env perl6
use v6.c;
use Test;

my @tests = (
  (5,9) => 970,
  (91,123) => 12087152,
  (1,10) => 2640,
);

plan +@tests;

my &diff-sq-of-sum = {[+]($_=$^a..$^b)²-[+] $_»²}

for @tests -> $_ ( :key(@input), :value($expected) ) {
  is diff-sq-of-sum(|@input), $expected, .gist
}
1..3
ok 1 - (5 9) => 970
ok 2 - (91 123) => 12087152
ok 3 - (1 10) => 2640

1
บันทึกไบต์ย้ายที่ได้รับมอบหมายและสิง parens:{$_=$^a..$^b;.sum²-[+] $_»²}
ฟิล H

1
25 ไบต์:{.sum²-[+] $_»²}o&[..]
nwellnhof

2

Brachylogขนาด 24 ไบต์

:efL:{:2^.}a+S,L+:2^:S-.

คาดว่าตัวเลขทั้งสองในอินพุตเป็นรายการเช่น [91:123]หมายเลขในการป้อนข้อมูลเป็นรายการเช่น

คำอธิบาย

:efL                     Find the list L of all integers in the range given in Input
    :{:2^.}a             Apply squaring to each element of that list
            +S,          Unify S with the sum of the elements of that list
               L+:2^     Sum the elements of L, then square the result
                    :S-. Unify the Output with that number minus S





1

CJam, 17 ไบต์

q~),>_:+2#\2f#:+-

ทดสอบที่นี่

คำอธิบาย

q~       e# Read and evaluate input, dumping M and N on the stack.
),       e# Increment, create range [0 1 ... N].
>        e# Discard first M elements, yielding [M M+1 ... N].
_        e# Duplicate.
:+2#     e# Sum and square.
\2f#:+   e# Swap with other copy. Square and sum.
-        e# Subtract.

อีกวิธีหนึ่งเราสามารถรวมผลคูณของคู่ที่แตกต่างกันทั้งหมด (โดยทั่วไปแล้วจะคูณกำลังสองของผลรวมและลบกำลังสอง) แต่นั่นก็เป็นจำนวนไบต์ที่ยาวกว่า:

q~),>2m*{)-},::*:+

1

PowerShell v2 +, 47 ไบต์

สองรูปแบบ

param($n,$m)$n..$m|%{$o+=$_;$p+=$_*$_};$o*$o-$p

$args-join'..'|iex|%{$o+=$_;$p+=$_*$_};$o*$o-$p

ในทั้งสองกรณีที่เรากำลังสร้างช่วงที่มีผู้ประกอบการที่ท่อห่วง.. |%{...}การวนซ้ำแต่ละครั้งเราจะสะสม$oและ$pเป็นผลรวมหรือผลบวกกำลังสอง จากนั้นเราจะคำนวณผลรวมของตารางที่มีและลบ$o*$o $pเอาท์พุทที่เหลืออยู่ในท่อและการพิมพ์เป็นนัย


1

JavaScript (ES6), 67 ไบต์

a=>b=>([s=q=0,...Array(b-a)].map((_,i)=>q+=(s+=(n=i+a),n*n)),s*s-q)

ชุดทดสอบ

f=a=>b=>([s=q=0,...Array(b-a)].map((_,i)=>q+=(s+=(n=i+a),n*n)),s*s-q)
e=s=>`${s} => ${eval(s[0])}` // template tag format for tests
console.log(e`f(5)(9)`)
console.log(e`f(91)(123)`)
console.log(e`f(1)(10)`)




1

Julia, 25 ไบต์

f(a,b,x=a:b)=sum(x)^2-x'x

นี่คือฟังก์ชั่นที่ยอมรับสองจำนวนเต็มและส่งกลับอาร์เรย์จำนวนเต็ม 1x1

วิธีการง่ายๆคือ: คอนสตรัคUnitRangeจากจุดสิ้นสุดaและbและเรียกมันว่าxแล้วสรุปสแควร์มันและลบบรรทัดฐานซึ่งคำนวณเป็นxtranspose(x) * x

ลองออนไลน์! (รวมถึงกรณีทดสอบทั้งหมด)


1
a\b=-(x=a:b)'x+sum(x)^2บันทึกไม่กี่ไบต์
Dennis

1

TI-BASIC, 19 ไบต์

Prompt N,M
randIntNoRep(N,M
sum(Ans)2-sum(Ans2

randIntNoRepรับช่วง (สับ) ที่เหลือเป็นคำอธิบายที่ค่อนข้างดี


1

Fith , 52 ไบต์

{ 1 + range dup sum 2 pow swap { 2 pow } map sum - }

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

คำอธิบาย:

{
    1 + range dup      2 ranges from a to b inclusive
    sum 2 pow          Sum one and square it
    swap               Bring a fresh range to the top
    { 2 pow } map sum  Square every element and sum the list
    -                  Subtract
}

1
หากคุณชอบ postfix การทำงานแบบไร้จุดและใช้สแต็คเป็นพื้นฐานคุณอาจชอบFactor : D
cat

1

GeoGebra, 91 ไบต์

a(x)=(x²+x)/2
b(x)=x³/3+x²/2+x/6
c(x,y)=(a(y)-a(x))²
d(x,y)=b(y)-b(x)
c(x-1,y)-d(x-1,y)

กำหนดฟังก์ชั่น (อาจe(x,y)) ที่คำนวณความแตกต่างที่ต้องการ
a(x)คำนวณผลรวมของตัวเลขธรรมชาติระหว่างและ0 คำนวณผลรวมของกำลังสองของจำนวนธรรมชาติระหว่างและ ก่อนอื่นให้คำนวณผลรวมของจำนวนธรรมชาติระหว่างและจากนั้นกำลังสองรวมกัน คำนวณผลรวมของสี่เหลี่ยมระหว่างและ บรรทัดสุดท้ายกำหนดฟังก์ชั่นหลายตัวแปรที่เสร็จสิ้นการคำนวณ ฟังก์ชั่นจะถูกกำหนดชื่อโดยอัตโนมัติโดยบันทึกสองสามไบต์x
b(x)0x
c(x,y)xy
d(x,y)b(x)b(y)


สวัสดีฉันจะเรียกฟังก์ชันที่กำหนดได้อย่างไร ฉันสามารถค้นหาอินพุตที่geogebra.org/classic#casแต่ไม่สามารถหาวิธีค้นหาหรือเรียกใช้ฟังก์ชันสุดท้ายได้
sundar - Reinstate Monica

@sundar: บรรทัดสุดท้ายคือการแสดงออกใน x และ y เราสามารถเสริมe(x,y)=เพื่อให้ชื่อ แต่เพื่อบันทึกไบต์เราไม่ได้อยู่ที่นี่ GeoGebra กำหนดชื่อนิพจน์โดยอัตโนมัติ (อาจเป็น e เนื่องจากเป็นตัวอักษรถัดไปที่มี) ฉันไม่มีสภาพแวดล้อมพร้อมใช้งานในตอนนี้ แต่ฉันจะไม่ใช้บานหน้าต่าง CAS บานหน้าต่างพีชคณิตและแถบป้อนข้อมูลควรทำงานถูกต้อง (ไม่นานมานี้ตั้งแต่ฉันใช้ GGb ออนไลน์ภาพลักษณ์ทางจิตของฉันอาจจะล้าสมัย)
Joe
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.