뿌리를 회전


11

감안할 때 제로가 아닌 가상과 경우에하도록 실제 라인에있는 정수 계수와 뿌리를 가진 다항식 a그럼 루트입니다 -a뿌리가 90도 회전과 함께, 또 다른 다항식을 반환합니다.

세부

다항식은 임의의 합리적인 형식, 예를 들어 계수 목록으로 제공 될 수 있습니다. a루트 인 경우에만 루트 인 대칭 조건 -a은 회전 된 다항식에도 실제 정수 계수를 갖도록 강제합니다.

다음에, 다항식은 내림차순 모노 미터 계수 목록으로 제공됩니다. 다항식 x^2-1은 근을가 {1,-1}집니다. 하여 그 회전 90°에 의해 승산 수단 i의 출력 다항식 뿌리 있어야하므로 (허수 부) {i,-i}x^2 + 1.

Input / Output
[1 0 10 0 -127 0 -460 0 576]  [1 0 -10 0 -127 0 460 0 576]
[1 0 -4 0] [1 0 4 0]
[1] [1]

다항식과 다항식의 정도를
다룰 수 있습니다

그렇습니다.
flawr

모든 예는 음의 다항식을 사용합니다. 입력 다항식이 모닉이라고 가정 할 수 있습니까? 출력 다항식 모닉이어야합니까?
데니스

또한 1 이외의 다른 리딩 계수를 가질 수 없으며 출력도 정수 배까지 정의됩니다.
flawr

형식이 계수 목록 일 필요는 없습니다. 합리적인 형식은 어느 정도입니까? 내 형식은 불확정의 문자열 표현 일 수 있습니다 x내 제출 캔 문자열 대체 있도록 x함께 (i*x)? 다항식을 평가하는 함수를 형식화하여 제출할 때 함수로 함수를 작성할 수 x -> i*x있습니까?
xnor

답변:


12

수학, 10 바이트

x의 함수를 취하고 ix의 대체 함수 인 순수 함수.

#/.x->I*x&

7 바이트 만 사용하는 대안이지만 카운트되는지 확실하지 않습니다. 순수한 함수를 받아 x의 함수를 반환하는 순수한 함수.

#[I*x]&

5
그리고 당신은 내장이 필요하지 않았습니다!
Neil

나는 순수한 함수 다항식이 "합리적인 형식"이라고 확신합니다 ( 여기있는 것처럼 ) #변수로 사용 &하고 끝에 있습니다.
JungHwan Min

내가 할 수 있다면 나는 이것을 두 번지지하겠다
Greg Martin

두 번째 대답에 대한 나의 유일한 관심사는 입력 (순수 함수)과 출력 (x 함수) 사이의 불일치였습니다.
이안 밀러

6

젤리 , 5 바이트

Jı*Ċ×

온라인으로 사용해보십시오!

작동 원리

첫 번째 요소에을 곱하고 1세 번째 요소에을 곱합니다 -1.

Jı*Ċ×  argument: z
J      [1,2,...,len(z)]
 ı     i (the imaginary unit)
  *    to the power of (each element)
   Ċ   imaginary part
    ×  multiply by input (vectorize)

알고리즘 증명

다항식을로하자 f(x).

우리는 x근이 근본 값을 보장 받으 -x므로 f짝수 여야합니다 0. 즉, 홀수 거듭 제곱에 대한 계수는이어야합니다 .

이제, 뿌리를 회전시키는 90°것은 본질적으로 f(ix)입니다.

계수를 확장 한 다음 비교하면 알고리즘이 증명됩니다.


그래서 우리는 2, 4, 6, 8 등을 만질 필요가 없습니까?
Rohan Jhunjhunwala

2
어쨌든 제로입니다.
flawr

당신의 트릭 ı*Ċ은 매우 좋습니다, 당신은 그것을 설명해야합니다 :)
Leo

@Leo 그것은 본질적으로 간단한 구현이지만 ...
Leaky Nun

당신이 대신 모든 계수를 가질 수 있기 때문에 여기에서의 논리는 매우 옳지 않다 에도 힘이 0이
Ørjan 요한센

5

자바 스크립트 (ES6), 25 바이트

a=>a.map((e,i)=>i%4?-e:e)

원래 다항식에는 x = ±a실수 또는 허수 선이 놓여 있는 형태의 해가 있습니다. 때 a = 0( x다항식의 인수 인 경우 )를 제외하고 이는 다항식 x² - a²의 인수임을 의미합니다 (대체 항이 항상 0임을 의미). 이제 뿌리를 돌리면 계수가로 바뀝니다 x² + a². 모든 요소가 동시에 변경되므로 모든 항의 합계 인 다항식의 세 번째 항 -a², 변화 부호, 항 쌍의 곱의 합인 다섯 번째 항 -a²은 같은 부호를 유지합니다. 다른 모든 용어가 번갈아 나타납니다.




1

SILOS , 71 66 바이트

readIO
b=i
lbla
readIO
d=c
d&2
i=i*(1-d)
printInt i
b-1
c+1
if b a

온라인으로 사용해보십시오!

@Leaky Nun 마법사가 5 바이트를 절약하기 위해 여기에서 무엇을했는지 전혀 알지 못합니다.

알아 내려면 잠시 시간이 걸렸지 만 C의 두 번째 비트는 원하는대로 번갈아 나타납니다. 따라서 @Leaky Nun은이를 활용하여 필요한 비트를 절약했습니다.



0

TI 기본, 20 바이트

seq(real(i^X/i)Ans(X),X,1,dim(Ans

에 저장된 경우 prgmA다음을 실행하십시오.

{1, 0, 3, 0, 1}:prgmA

seq(단지 복잡한 숫자를 지원하지 않는 하나의 명령 이어야했습니다 . :)

* : 과장


0

카시오 기본, 8 바이트

n|x=𝑖x

Ian Miller의 Mathematica 접근 방식을 사용하는 이름없는 기능. Math2 키보드의 가상 𝑖를 사용해야하고 (2 바이트로 계산하고, 문자 코드 769) 다항식을 방정식으로 입력해야합니다 x.

코드의 경우 7 바이트 n, 매개 변수 로 지정할 1 바이트

설명 : 방정식을 취한 n다음 모든 인스턴스를 x로 바꿉니다 𝑖x.



0

Stax , 5 바이트

Æ[]▐↨

온라인으로 실행하고 디버그하십시오!

젤리 포트 답변입니다.

ASCII 표현을 사용하여 다음을 설명합니다.

mih|1*
m         Map each element with rest of program, print mapped results on individual lines
 i        Current 0-based loop index
  h       Floor(i/2)
   |1     (-1)^(i/2)
     *    Multiply with current element

선행 0이있을 수 있으면 먼저 다듬어야하며 다른 바이트를 사용하여 수행 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.