เลขชี้กำลังของจำนวนเชิงซ้อน


10

ได้รับสองจำนวนเต็มซึ่งอาจจะเป็นเชิงลบศูนย์หรือบวกaและb(ถ่ายในรูปแบบที่เหมาะสมใด ๆรวมทั้งการป้อนจำนวนเชิงซ้อนธรรมดา ) แปลงเป็นa + biที่iเป็นจำนวนจินตนาการ (รากที่สองของเชิงลบอย่างใดอย่างหนึ่ง) จากนั้นยกมันขึ้นสู่อำนาจของตัวแปรที่สาม (จำนวนเต็มบวก) ที่เป็นไปได้c จากนั้นคุณควรจะจบลงกับสิ่งที่ต้องการ จากนั้นคุณต้องส่งออกหรือส่งคืนและในรูปแบบที่เหมาะสม ( รวมถึงการแสดงผลจำนวนเชิงซ้อนธรรมดา )(a + bi)cd + eide

อินพุตและเอาต์พุตอาจถูกถ่ายหรือแสดงผลในลำดับใด ๆ

ตัวอย่าง:

5, 2, 2 -> 21, 20
1, 4, 2 -> -15, 8
-5, 0, 1 -> -5, 0

หากเราใช้สูตรของ de Moivre จะอนุญาตให้มีการกำหนดจุดลอยตัวหรือไม่
Giuseppe

@Giuseppe ใช่ไม่เป็นไร
Okx

4
FWIW ฉันคิดว่าการเปลี่ยนแปลงกฎ (อนุญาตให้ I / O มีความยืดหยุ่นอย่างเต็มที่) ทำให้ความท้าทายที่น่าสนใจค่อนข้างน่าเบื่อ
Jonathan Allan

@JanathanAllan อย่างน้อยสำหรับภาษาที่มีการรองรับจำนวนเชิงซ้อนพื้นเมือง - ซึ่งค่อนข้างมาก :(
Felix Palmen

@JanathanAllan ฉันไม่สามารถทำให้ทุกคนพอใจ :(
Okx

คำตอบ:


7

Mathematica ขนาด 17 ไบต์

ReIm[(#+#2I)^#3]&

ลองออนไลน์!

-8 ไบต์จาก alephalpha

แต่ ........ กฎมีการเปลี่ยนแปลง ...... ดังนั้น

Mathematica ขนาด 5 ไบต์

Power

5
{Re@#,Im@#}&->ReIm
alephalpha

1
17 ไบต์ คุณสามารถลบ@#&ได้
Mr. Xcoder

ฮ่าฮ่าใช่ความผิดของฉัน
J42161217

ตอนนี้คุณสามารถทำหรือเพียงแค่#^#2& Power
สิ้นเชิงมนุษย์

6

Python 3 , 3 ไบต์

pow

ลองออนไลน์!

อินพุตและเอาต์พุตเป็นตัวเลขที่ซับซ้อน


Python 3 , 47 ไบต์

def f(a,b,c):n=(a+b*1j)**c;return n.real,n.imag

ลองออนไลน์!

อินพุตและเอาต์พุตเป็นจำนวนเต็ม


Python 2 , 62 60 ไบต์

-2 ไบต์ต้องขอบคุณ @Leonhard

a,b,c=input();d=1;e=0
exec'd,e=a*d-b*e,a*e+b*d;'*c
print d,e

ลองออนไลน์!

ไม่ใช้ประเภทตัวเลขที่ซับซ้อน


4

Javascript (ES6), 51 50 ไบต์

a=>b=>g=c=>c?([x,y]=g(c-1),[x*a-b*y,a*y+b*x]):"10"
  • รับอินพุตในรูปแบบ currying: f(a)(b)(c)
  • ส่งคืนผลลัพธ์เป็นอาร์เรย์: [d, e]

คำอธิบาย

a=>b=>g=c=>               // Input in currying syntax
    c?(                   // If `c` != 0:
        [x,y]=g(c-1),     //     Set [x, y] to the result of f(a)(b)(c-1)
        [x*a-b*y,a*y+b*x] //     Return (a + bi) * (x + yi)
    ):                    // Else: (when c = 0)
        "10"              //     Return [1, 0] (to end the recursion)

f=a=>b=>g=c=>c?([x,y]=g(c-1),[x*a-b*y,a*y+b*x]):"10"
<div oninput="o.innerText=f(a.value)(b.value)(c.value)"><input id=a type=number value=0><input id=b type=number value=0><input id=c type=number value=1 min=1><pre id=o>



3

ที่จริงแล้ว 1 ไบต์

ลองออนไลน์!

โปรดทราบว่ากฎมีการเปลี่ยนแปลงและจำนวนเชิงซ้อนเป็นประเภท I / O ที่ถูกต้อง (น่าเสียดายที่สิ่งนี้เปลี่ยนโพสต์ให้เป็นการท้าทาย คำตอบเดิมด้านล่าง

จริงแล้ว 3 ไบต์

Çⁿ╫

ลองออนไลน์!

ส่งคืนค่าที่คั่นด้วยขึ้นบรรทัดใหม่ รับอินพุตในลำดับย้อนกลับและส่งคืนผลลัพธ์ในลำดับย้อนกลับ (ดูลิงก์ tio)

Çⁿ╫ - โปรแกรมเต็มรูปแบบ อินพุตย้อนกลับ

Ç - ส่งคืน a + bi
 ⁿ - การยกกำลัง
  ╫ - ผลักดันส่วนที่แท้จริงและจินตภาพของ a

3

เยลลี่ 1 ไบต์

*

ลองออนไลน์!

ขอบคุณMr. Xcoderสำหรับการแจ้งเตือนฉันเมื่อมีการอัพเดทกฎ (-6 เป็นผล)
ขอบคุณที่มีคนแจ้งเตือนฉันเมื่อมีการอัพเดทกฎ (-2 เป็นผล)

อาร์กิวเมนต์แรก: อาร์กิวเมนต์ที่(a+bj)
สอง: c
ผลตอบแทน:(d+ej)




อันที่จริงแล้ว byter ของทั้ง 3 ของ Jonathan นั้นพอเพียงแล้ว ḅı*เนื่องจากกฎมีการเปลี่ยนแปลงและคุณได้รับอนุญาตให้ส่งออกจำนวนเชิงซ้อนแบบธรรมดา
Mr. Xcoder

@ Mr.Xcoder กำลังนอนหลับเมื่อเกิดเหตุการณ์เช่นนี้
Erik the Outgolfer

1
ดูเหมือนว่า * onebyter ก็โอเคในขณะที่คุณสามารถป้อนข้อมูลเป็นคอมเพล็กซ์ได้
สรรพนามของฉันคือ monicareinstate

3

R , 3 ไบต์

สิ่งนี้กำลังน่าเบื่อ หากอินพุตและเอาต์พุตอนุญาตให้เป็นจำนวนเชิงซ้อนจะมี builtin สำหรับฟังก์ชั่นพลังงาน

`^`

ตัวอย่างเช่น:

> (5+2i)^2
[1] 21+20i
> (1+4i)^2
[1] -15+8i
> (-5+0i)^1
[1] -5+0i

หรือ

> `^`(5+2i,2)
[1] 21+20i
> `^`(1+4i,2)
[1] -15+8i
> `^`(-5+0i,1)
[1] -5+0i

2

05AB1E , 20 19 17 16 ไบต์

‚UTSsFXâP`(‚RŠ‚+

ลองออนไลน์! ใช้เวลาสามปัจจัยการผลิตที่แยกต่างหากในการสั่งซื้อและผลอาร์เรย์b, a, c [d, e]แก้ไข: บันทึก 2 ไบต์ขอบคุณ @Datboi บันทึกแล้ว 1 ไบต์ขอบคุณ @Adnan คำอธิบาย:

‚                   Join a and b into a pair
 U                  Store in variable X
  T                 Push 10 to the stack
   S                Split into the pair [d, e] = [1, 0]
    s               Swap with c
     F              Repeat the rest of the program c times
      X             Get [a, b]
       â            Cartesian product with [d, e]
        P           Multiply each pair together [da, db, ea, eb]
         `          Push each product as a separate stack entry
          (         Negate eb
           ‚        Join with ea into a pair [ea, -eb]
            R       Reverse the pair [-eb, ea]
             Š      Push under da and db
              ‚     Join them into a pair [da, db]
               +    Add the two pairs [da-eb, db+ea]

อินพุตและเอาต์พุตอาจถูกถ่ายหรือแสดงผลในลำดับใด ๆ - นั่นหมายความว่าคุณสามารถรับอินพุตสองช่องแรกได้ในลำดับที่กลับกัน
Mr. Xcoder

@ Mr.Xcoder ขอบคุณฉันไม่ได้สังเกตว่า
Neil

ผมไม่แน่ใจว่าถ้ามันเป็นเรื่องสำคัญหรือไม่ 'jì+³mแต่การคำนวณตัวเลขยังสามารถทำได้ด้วย
Adnan

คุณสามารถแทนที่1 0‚ด้วยTSสำหรับ -2 ไบต์ :)
Datboi

และเวกเตอร์โดยอัตโนมัติเพื่อให้คุณไม่จำเป็นต้องP
Adnan

2

C # (.NET Core) , 62 38 ไบต์

a=>c=>System.Numerics.Complex.Pow(a,c)

ลองออนไลน์!


คุณควรรวม.Realและ. Imaginary` ในคำตอบของคุณ .. ตามกฎ " คุณต้องส่งออกหรือส่งคืนdและeในรูปแบบที่เหมาะสม (ไม่รวมถึงการแสดงผลจำนวนเชิงซ้อนธรรมดา) " คุณไม่ได้รับอนุญาตให้ส่งออก จำนวนเชิงซ้อน
Kevin Cruijssen

2

Pyth, 5 12 5 2 ไบต์

^E

ใช้เวลาในแรกตามด้วยca+bj

หม้อไอน้ำสำเร็จรูปขนาด 7 ไบต์เพราะเห็นได้ชัดว่าการส่งออกเป็นตัวเลขในจินตนาการไม่ได้รับอนุญาต มันได้รับอนุญาตอีกครั้ง! เย่! และด้วยการหาจำนวนเชิงซ้อนที่เป็นอินพุตที่สมเหตุสมผลเราสามารถตัดเพิ่มอีก 3 ไบต์!

โซลูชันก่อนหน้า:

^.jEE

เมื่อจำนวนเชิงซ้อนไม่เข้าที่เหมาะสม

m,edsd]^.jEE

เมื่อจำนวนเชิงซ้อนไม่ได้ผลลัพธ์ที่สมเหตุสมผล

ชุดทดสอบ



2

J, 10 , 7 , 1 ไบต์s

^

ใช้cเป็นอาร์กิวเมนต์ที่ถูกต้องและจำนวนเชิงซ้อนajb(วิธีที่คุณแทนค่าa + biใน J) เป็นอาร์กิวเมนต์ซ้าย

ลองออนไลน์!

โซลูชั่นอื่น ๆ

7 ไบต์

รับอินพุตจำนวนเชิงซ้อนเป็นรายการ

^~j./@]

10 ไบต์

นี้เอาท์พุตในรายการa + bia b

+.@^~j./@]

ฉันต้องการลองสิ่งที่น่ารักเหมือน^~&.(j./)แต่สิ่งที่ตรงกันข้ามj./ไม่ชัดเจน ที่จริงแล้วได้^~&.(+.inv)ผลและคุณสามารถทำสิ่ง^&.(+.inv)ที่เป็น 10 ไบต์ถ้าคุณย้อนกลับลำดับที่คุณใช้ args


2

TI-BASIC, 25 22 8 ไบต์

รับจำนวนเชิงซ้อนและเลขชี้กำลังเป็นอินพุตและเก็บเอาต์พุตAnsเป็นจำนวนเชิงซ้อน ลดลงอย่างมากในไบต์เนื่องจากข้อ จำกัด คลายในอินพุต / เอาต์พุต

Prompt C,E
C^E

คุณสามารถบันทึก 2 ไบต์ด้วยimag({iAns,Ansในบรรทัดสุดท้าย (โดยiฉันหมายถึงจำนวนเชิงซ้อนi )
Misha Lavrov

1
และฉันเดาอีกหนึ่งไบต์โดยรวมสองบรรทัดเข้าimag({i,1}(A+Bi)^Cด้วยกัน
Misha Lavrov

1
กฎมีการเปลี่ยนแปลงตอนนี้คุณสามารถรับข้อมูลเข้าและส่งกลับจำนวนเชิงซ้อนหากเป็นไปได้
Erik the Outgolfer

2

รูทีนย่อยรหัสเครื่อง 6502 , 199 187 185 ไบต์

A2 03 B5 FB 95 26 CA 10 F9 88 D0 01 60 A5 26 85 61 A5 27 85 62 A5 FB 85 63 A5
FC 85 64 A9 20 85 6F D0 36 18 A5 6D 65 65 85 28 A5 6E 65 66 85 29 A5 4B 85 26
A5 4C 85 27 50 CF 38 A5 6D E5 65 85 4B A5 6E E5 66 85 4C A5 28 85 61 A5 29 85
62 A5 FB 85 63 A5 FC 85 64 06 6F A9 00 85 65 85 66 A2 10 46 62 66 61 90 0D A5
63 18 65 65 85 65 A5 64 65 66 85 66 06 63 26 64 CA 10 E6 A9 FF 24 6F 70 B9 30
02 F0 9E A5 65 85 6D A5 66 85 6E 24 6F 30 14 A5 28 85 61 A5 29 85 62 A5 FD 85
63 A5 FE 85 64 06 6F D0 B4 A5 26 85 61 A5 27 85 62 A5 FD 85 63 A5 FE 85 64 06
6F B0 A0
  • -12 ไบต์พร้อมปรับปรุงโครงสร้าง "สปาเก็ตตี้"
  • -2 ไบต์เปลี่ยน register เพื่อส่งผ่าน exponent ดังนั้นเราสามารถใช้ zeropage addressing mode ใน loop copy แรกได้

นี่เป็นรหัสที่ไม่ขึ้นอยู่กับตำแหน่งเพียงแค่วางไว้ใน RAM และเรียกมันด้วย jsrคำสั่ง

ชุดคำสั่งใช้ฐาน (ซับซ้อน) เป็นจำนวนเต็ม 16 บิตสองตัว (ส่วนเติม 2 ส่วน, ส่วนน้อย) ใน$fb/$fc(จริง) และ$fd/$fe(จำนวนจินตภาพ) และเลขชี้กำลังเป็นจำนวนเต็ม 8 บิตแบบไม่ได้ลงนามในการYลงทะเบียน

ผลลัพธ์ถูกส่งคืนเป็น$26/$27(จริง) และ$28/$29(จินตภาพ)


คำอธิบาย

สิ่งนี้ยังคงเป็นความท้าทายที่น่าสนใจใน CPU 6502 เนื่องจากไม่มีคำแนะนำในการคูณ วิธีการนั้นตรงไปตรงมาการใช้การคูณที่ซับซ้อนและดำเนินการได้บ่อยตามที่ต้องการโดยตัวแทน การเล่นกอล์ฟทำได้โดยหลีกเลี่ยงรูทีนย่อยแทนการสร้าง "สปาเก็ตตี้สาขา" ดังนั้นรหัสสำหรับการคูณ 16 บิตอย่างง่ายที่จำเป็นต้องใช้หลายครั้งจะถูกนำมาใช้ซ้ำด้วยค่าใช้จ่ายต่ำสุดที่เป็นไปได้ นี่คือการถอดแยกชิ้นส่วนที่แสดงความคิดเห็น:

 .cexp:
A2 03       LDX #$03            ; copy argument ...
 .copyloop:
B5 FB       LDA $FB,X
95 26       STA $26,X
CA          DEX
10 F9       BPL .copyloop       ; ... to result
 .exploop:
88          DEY                 ; decrement exponent
D0 01       BNE .mult           ; zero reached -> done
60          RTS
 .mult:                         ; multiply (complex) result by argument
A5 26       LDA $26             ; prepare to multiply real components
85 61       STA $61             ; (a*c)
A5 27       LDA $27
85 62       STA $62
A5 FB       LDA $FB
85 63       STA $63
A5 FC       LDA $FC
85 64       STA $64
A9 20       LDA #$20            ; marker for where to continue
85 6F       STA $6F
D0 36       BNE .mult16         ; branch to 16bit multiplication
 .mult5:
18          CLC                 ; calculate sum (a*d) + (b*c)
A5 6D       LDA $6D
65 65       ADC $65
85 28       STA $28             ; and store to imaginary component of result
A5 6E       LDA $6E
65 66       ADC $66
85 29       STA $29
A5 4B       LDA $4B             ; load temporary result (a*c) - (b*d)
85 26       STA $26             ; and store to real component of result
A5 4C       LDA $4C
85 27       STA $27
50 CF       BVC .exploop        ; next exponentiation step
 .mult3:
38          SEC                 ; calculate difference (a*c) - (b*d)
A5 6D       LDA $6D
E5 65       SBC $65
85 4B       STA $4B             ; and store to temporary location
A5 6E       LDA $6E
E5 66       SBC $66
85 4C       STA $4C
A5 28       LDA $28             ; prepare to multiply real component of result
85 61       STA $61             ; with imaginary component of argument
A5 29       LDA $29             ; (a*d)
85 62       STA $62
A5 FB       LDA $FB
85 63       STA $63
A5 FC       LDA $FC
85 64       STA $64
06 6F       ASL $6F             ; advance "continue marker"
 .mult16:
A9 00       LDA #$00            ; initialize 16bit multiplication
85 65       STA $65             ; result with 0
85 66       STA $66
A2 10       LDX #$10            ; bit counter (16)
 .m16_loop:
46 62       LSR $62             ; shift arg1 right
66 61       ROR $61
90 0D       BCC .m16_noadd      ; no carry -> nothing to add
A5 63       LDA $63             ; add arg2 ...
18          CLC
65 65       ADC $65
85 65       STA $65
A5 64       LDA $64
65 66       ADC $66
85 66       STA $66             ; ... to result
 .m16_noadd:
06 63       ASL $63             ; shift arg2 left
26 64       ROL $64
CA          DEX                 ; decrement number of bits to go
10 E6       BPL .m16_loop
A9 FF       LDA #$FF            ; check marker for where to continue
24 6F       BIT $6F
70 B9       BVS .mult3
30 02       BMI .saveres        ; have to save result to temp in 2 cases
F0 9E       BEQ .mult5
 .saveres:
A5 65       LDA $65             ; save result to temporary
85 6D       STA $6D
A5 66       LDA $66
85 6E       STA $6E
24 6F       BIT $6F             ; check "continue marker" again
30 14       BMI .mult4
 .mult2:
A5 28       LDA $28             ; prepare to multiply imaginary components
85 61       STA $61             ; (b*d)
A5 29       LDA $29
85 62       STA $62
A5 FD       LDA $FD
85 63       STA $63
A5 FE       LDA $FE
85 64       STA $64
06 6F       ASL $6F             ; advance "continue marker"
D0 B4       BNE .mult16         ; branch to 16bit multiplication
 .mult4:
A5 26       LDA $26             ; prepare to multiply imaginary component of
85 61       STA $61             ; result with real component of argument
A5 27       LDA $27             ; (b*c)
85 62       STA $62
A5 FD       LDA $FD
85 63       STA $63
A5 FE       LDA $FE
85 64       STA $64
06 6F       ASL $6F             ; advance "continue marker"
B0 A0       BCS .mult16         ; branch to 16bit multiplication

ตัวอย่างโปรแกรมที่ใช้มัน (C64 แหล่งที่มาของการชุมนุมในca65 -syntax):

.import cexp

CEXP_A          = $fb
CEXP_AL         = $fb
CEXP_AH         = $fc
CEXP_B          = $fd
CEXP_BL         = $fd
CEXP_BH         = $fe

CEXP_RA         = $26
CEXP_RAL        = $26
CEXP_RAH        = $27
CEXP_RB         = $28
CEXP_RBL        = $28
CEXP_RBH        = $29

.segment "LDADDR"
                .word   $c000

.segment "MAIN"
                jsr     $aefd           ; consume comma
                jsr     $ad8a           ; evaluate number
                jsr     $b1aa           ; convert to 16bit int
                sty     CEXP_AL         ; store as first argument
                sta     CEXP_AH
                jsr     $aefd           ; ...
                jsr     $ad8a
                jsr     $b1aa
                sty     CEXP_BL         ; store as second argument
                sta     CEXP_BH
                jsr     $b79b           ; read 8bit unsigned into X
                txa                     ; and transfer
                tay                     ; to Y

                jsr     cexp            ; call our function

                lda     CEXP_RAH        ; read result (real part)
                ldy     CEXP_RAL
                jsr     numout          ; output
                ldx     CEXP_RBH        ; read result (imaginary part)
                bmi     noplus
                lda     #'+'            ; output a `+` if it's not negative
                jsr     $ffd2
noplus:         txa
                ldy     CEXP_RBL
                jsr     numout          ; output (imaginary part)
                lda     #'i'
                jsr     $ffd2           ; output `i`
                lda     #$0d            ; and newline
                jmp     $ffd2

numout:
                jsr     $b391           ; convert to floating point
                jsr     $bddd           ; format floating point as string
                ldy     #$01
numout_loop:    lda     $ff,y           ; output loop
                bne     numout_print    ; until 0 terminator found
                rts
numout_print:   cmp     #' '            ; skip space characters in output
                beq     numout_next
                jsr     $ffd2
numout_next:    iny
                bne     numout_loop

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

การใช้งาน: sys49152,[a],[b],[c]เช่นsys49152,5,2,2(ขาออก21+20i)


1

Dyalog APLขนาด 10 ไบต์

⎕*⍨⊣+¯11○⊢

ลองออนไลน์!

aคืออาร์กิวเมนต์ที่เหลือคืออาร์กิวเมนต์ที่bถูกต้องและcผ่านทางพรอมต์อินพุต

dJeส่งคืนตัวเลขที่ซับซ้อนในรูปแบบ


มีการเปลี่ยนแปลงกฎตอนนี้คุณสามารถรับข้อมูลเข้าและส่งกลับตัวเลขที่ซับซ้อนได้หากเป็นความช่วยเหลือใด ๆ
Erik the Outgolfer

1

MATL , 1 ไบต์

^

อินพุตเป็นa+jb, c.

ลองออนไลน์!

เวอร์ชันเก่า: อินพุตและเอาต์พุตที่ไม่ซับซ้อน 8 ไบต์

J*+i^&Zj

เพื่อป้อนข้อมูลเป็นb, ,ac

ลองออนไลน์!

คำอธิบาย

J           Push imaginary unit
 *          Multiply by implicit input b
  +         Add implicit input a
   i        Take input c
    ^       Power
     &Zj    Push real and imaginary parts. Implicitly display

ทวีคูณโดยปริยายอินพุตb - เพิ่มอินพุตโดยนัยb . คุณหมายถึงaในอันใดอันหนึ่งหรือไม่?
Mr. Xcoder

@ Mr.Xcoder ใช่ขอบคุณ แก้ไขแล้ว
Luis Mendo

คุณสามารถป้อนข้อมูลในรูปแบบของจำนวนเชิงซ้อนในขณะนี้และส่งออกในรูปแบบของจำนวนเชิงซ้อน คุณอาจจะตัดส่วนสำเร็จรูปจำนวนมากออกจากคำตอบนี้เพราะสิ่งนั้น
Steven H.

@ สตีเว่นเฮวิตต์ขอบคุณ! แก้ไขตอนนี้
Luis Mendo


0

8th , 38 ไบต์

รหัส

c:new dup >r ( r@ c:* ) rot n:1- times

SED (Stack Effect Diagram) คือ:c a b -- (a + bi) ^ c

คำเตือน : a + biถูกทิ้งไว้บนr-stackแต่สิ่งนี้จะไม่ส่งผลกระทบต่อการคำนวณในภายหลัง

เวอร์ชันที่ไม่ดีพร้อมความคิดเห็น

needs math/complex

: f \ c a b  -- (a + bi) ^ c
    c:new                      \ create a complex number from a and b
    dup                        \ duplicate a + bi
    >r                         \ store a + bi on r-stack
    ( r@ c:* ) rot n:1- times  \ raise ( a + bi ) to c
;

ตัวอย่างและการใช้งาน

: app:main
    \ rdrop is not strictly required
    2 5 2 f . cr rdrop
    2 1 4 f . cr rdrop 
    1 -5 0 f . cr rdrop 
    bye
;

ผลลัพธ์ของรหัสก่อนหน้า

c:1:data:{"real":21,"imag":20}
c:1:data:{"real":-15,"imag":8}
c:2:data:{"real":-5,"imag":0}

0

ระดับแปดเสียง / MATLAB ขนาด 6 ไบต์

@power

ฟังก์ชั่นไม่ระบุชื่อที่ป้อนตัวเลขสองตัวและส่งออกพลังงานของพวกเขา

ลองออนไลน์ !

เวอร์ชันเก่า: อินพุตและเอาต์พุตที่ไม่ซับซ้อน 30 ไบต์

@(a,b,c)real((a+j*b)^c./[1 j])

ฟังก์ชั่นไม่ระบุชื่อที่ป้อนตัวเลขสามตัวและส่งออกอาร์เรย์ของตัวเลขสองตัว

ลองออนไลน์!


0

Perl 6 ,  29 26 20 19  11 ไบต์

{$_=($^a+$^b*i)**$^c;.re,.im}

ลองมัน

{(($^a+$^b*i)**$^c).reals}

ลองมัน

((*+* *i)** *).reals

ลองมัน

((*+* *i)***).reals

ลองมัน

ด้วยการเปลี่ยนแปลงข้อ จำกัด ของเอาต์พุตมันสามารถลดลงได้อีก:

(*+* *i)***

ลองมัน

***ส่วนจะแยกเป็น** *เพราะ**ผู้ประกอบการมัดยาวกว่า*ผู้ประกอบการมัด

ขยาย:

#     __________________ 1st parameter
#    /   _______________ 2nd parameter
#   /   /         ______ 3rd parameter
#  /   /         /
# V   V         V
( * + * * i) ** *
#       ^    ^^
#        \     \________ exponentiation
#         \_____________ multiplication

(*+* *i)***ตอนนี้คุณสามารถทำได้
สิ้นเชิงมนุษย์

0

R, 25 ไบต์

ง่ายที่สุด - เนื่องจากอนุญาตให้ส่งสัญญาณเชิงซ้อนได้

function(a,b,c)(a+b*1i)^c

0

คาสิโอ - เบสิค 6 ไบต์

a^b

เปลี่ยนเป็นกฎเพื่อให้อินพุตและเอาต์พุตเป็นตัวเลขที่ซับซ้อนทำให้สิ่งนี้สั้นลงอย่างมาก

3 ไบต์สำหรับฟังก์ชัน +3 เพื่อป้อนa,bในกล่องพารามิเตอร์

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