주어진 n ^ n 찾기


27

도전

가능한 적은 문자로, n보다 큰 양의 정수가 0 인 i ^ n의 값을 찾으십시오. 이는 문자열로 출력되어야합니다.

모르는 사람들을 위해, i는 i ^ 2 = -1이되도록 정의됩니다. 그래서:

  • i ^ 1 = i
  • i ^ 2 = -1
  • i ^ 3 = -i
  • i ^ 4 = 1

그런 다음 반복됩니다.

규칙

  • 언어가 복소수를 지원하는 경우이 문제를 해결할 수있는 함수 나 산술을 사용하지 마십시오.
  • 부동 소수점 부정확성은 어쨌든 십진수를 반환하는 답변에는 적합하지만 정수 입력은 정확한 결과를 제공해야합니다

보너스 포인트

n이 음수 인 경우 값을 계산할 수있는 경우 -5

실수에 대한 값을 계산할 수있는 경우 -15 (이 보너스에는 위 보너스의 -5가 포함됨)

행운을 빕니다!


1
어떤 형식으로 정확하게 반환합니까? 기능 출력 또는 표준 출력을 통해?
자부심을 가진 haskeller

@proudhaskeller 태그 위키는 그에 대한 기본값을 나열합니다. 달리 지정하지 않는 한, 함수 및 프로그램은 정상이며, 함수 인수, STDIN 또는 명령 행 인수를 통해 입력되고 STDOUT 또는 함수 리턴 값을 통해 출력됩니다. 함수의 이름을 지정할 필요는 없습니다.
Martin Ender

1
@ MartinBüttner 그러나 함수 출력을 선택하면 내 언어로 된 복잡한 숫자없이 출력을 어떻게 포맷 / 저장해야합니까?
자랑스런 Haskeller

16
@BetaDecay 부동 소수점 정수란 무엇입니까? oO
Martin Ender

2
@ MartinBüttner 하하 잘못된 단어 : 다음 / 부동 소수점 숫자
베타 붕괴

답변:


15

루비, 점수 -2

(13 바이트, -15 보너스)

->n{[1,90*n]}

반올림 오류가 없습니다! (입력을 Rational로 전달하는 경우)


작성자 : Kezz101

실수를 지원하면 유효한 복소수 형식으로 출력 할 수 있습니다.

부정적인 점수는 내 아드레날린을 서두르 게합니다. 따라서 남용 된 규칙 이 고귀한 목표를 달성하기 위해 사용됩니다.

익명 함수를 만들고 극수 (각도 :도)로 복소수를 나타내는 2 개의 항목이있는 배열을 출력합니다.


4
"Ruby, -2 bytes".....
FantaC

3
이 1,000,000,000,000 번을 다운로드하면 2TB의 하드 드라이브 여유 공간이 생깁니 까? 나에게 좋은 거래처럼 들린다.
레드 울프 프로그램

^ 그렇게하기 전에 브라우저가 고장났습니다. 파일이 들어있는 "zip bomb"를 사용해 보시겠습니까? (추출하면 공간이 절약됩니다.)
A̲̲

15

CJam, 12 자-5 = 7

1'iW"-i"]li=

여기에서 테스트하십시오.

음의 입력을 지원합니다.

1              "Push 1.";
 'i            "Push the character i.";
   W           "Push -1.";
    "-i"       "Push the string -i.";
        ]      "Wrap all four in an array.";
         li    "Read STDIN and convert to integer.";
           =   "Access array. The index is automatically taken module the array length.";

프로그램이 끝나면 결과가 자동으로 인쇄됩니다.

Mathematica, 22 20 19 자-15 = 4

Sin[t=π#/2]i+Cos@t&

이것은 익명 함수이며 다음과 같이 사용할 수 있습니다

Sin[t=π#/2]i+Cos@t&[15]

또는 f말 하도록 할당 한 다음 수행하십시오 f[15].

실수를 지원하고 정수 입력에 대한 정확한 결과를 제공합니다.

(가) 있습니다 i입니다 하지 티카의 복잡한 (이다 I). 정의되지 않은 변수 일뿐입니다.

또한 식의 순서에도 불구하고 Mathematica는 출력을 R+Ci형태 로 재정렬합니다 .


필요하지 않습니다 4%. 자동으로 수행 할 수 있습니다.
jimmy23013

@ user23013 nifty :)
Martin Ender

8
두 답변이 분리되어서는 안됩니까?
저스틴

@Quincunx 어쩌면 ... 원래는 둘 다 CJam에 있었기 때문에 동일한 답변에 넣었습니다. 그러나 두 번째 것은 유효하지 않으므로 Mathematica로 이식했지만 원래 있던 곳에 두었습니다. 사람들이 주장한다면 나는 그들을 나눌 수 있습니다.
Martin Ender

그리고 f@15대신 에 사용하여 캐릭터를 저장할 수 있습니다 f[15].
orome

14

파이썬 2-(24-5) = 19

lambda n:'1i--'[n%4::-2]

대부분의 신용은 @ user2357112에 속하며, 나는 이 답변 에 대한 의견에서 그의 답변을 조금 더 골프에 올렸습니다 .

설명 : n%4문자열 의 색인 에서 시작합니다 '1i--'. 그런 다음 문자열의 각 문자에 대해 두 단계 씩 거꾸로 반복합니다. 예를 들어, n=6인덱스 2 -에서 시작한 다음을 건너 뛰고 i를 가져 와서 1반환 -1합니다.

@xnor는 같은 길이의 솔루션을 지적했습니다.

lambda n:'--i1'[~n%4::2] 

피스 -(14-5) = 9

어떻게 리버스 / 슬라이스 등을 시도하더라도 14를 얻을 수 있습니다. : '(

%_2<"1i--"h%Q4

pyth는 파이썬의 전체 색인 옵션을 지원하지 않기 때문에 본질적으로 위의 python 답변과 동일하지만 2 단계입니다. 온라인으로 사용해보십시오.

Pyth indexing에 대해 isaacg와 이야기 할 것입니다.)


파이썬 lambda을 변수에 할당 할 필요가 없습니까? 적어도 그것을 호출하려면 괄호로 묶어야하며 2 바이트를 추가하여 호출 할 수 있습니다 (lambda...)(n).
mbomb007

@ mbomb007 메타에 따르면 이것은 허용됩니다. 여기서 코드는 필요한 작업을 수행하는 함수를 만듭니다. 익명 람다는 파이썬에서 mapand와 같은 함수에 대해 상대적으로 자주 사용됩니다 sorted.
FryAmTheEggman

11

TI-BASIC (NSpire)-5 (20 자 -15)

cos(nπ/2)+sin(nπ/2)i

복소수 반환 값을 받으려면 i끝에를 (복잡한 i)로 바꾸십시오 .


@ MartinBüttner TI-Basic은 일종의 '표현식'유형을 사용하는 것으로 보이며 기본 제공 방법은 정확한 결과를 반환합니다.
Shujal

알 겠어요, 그럼 다 괜찮아요 ;)
Martin Ender 2011

"언어가 복소수를 지원하는 경우이 문제를 해결할 수있는 함수 나 산술을 사용하지 마십시오" + i는 산술
edc65

@ edc65 +는 실제로 복잡한 연산입니다. 당신이 마음에 들지 않으면 그러나 교체 정상으로 i. 변수 i가 정의되어 있지 않으면 i대신을 사용 하여 복소수를 얻습니다 . 나는 실제와 가상의 부분을 따로 계산하고 있습니다.
Shujal

1
@Shujal이 경우 i어쨌든 사용해야한다고 생각 합니다. 복잡한 나는 질문이 요구하는 문자조차 아니며, 2 바이트를 절약 할 것이므로 적어도 나와 묶을 것입니다.).
Martin Ender

7

놀라운 , 43 바이트

실제로 승자는 아니지만 Marbelous는 재미 있습니다. :)

}0
^0
=0&2
&1
}0
^1\/
=0&02D3169
\/\/&0&1&2

첫 번째 명령 줄 인수에서 입력을 단일 정수로 읽는 프로그램입니다. 입력은 모듈로 256을 취하지 만 256은 4로 나눌 수 있기 때문에 255보다 큰 입력에 대한 결과의 유효성에는 영향을 미치지 않습니다.

설명

Marbelous는 2D 프로그래밍 언어로 여러 장치를 통해 떨어지는 "대리석"(바이트 값)을 시뮬레이션합니다. 보드는 대리석을 처리 할 수있는 2 자 너비의 셀 (장치)로 구성됩니다. 보드 바닥에서 떨어지는 모든 것은 STDOUT으로 인쇄됩니다.

사용중인 장치를 살펴 보겠습니다.

  • }0첫 번째 명령 줄 인수가있는 곳입니다. 이 장치의 두 인스턴스를 사용했기 때문에 입력 값의 사본 두 개를 동시에 얻습니다.
  • ^nn입력 대리석의 비트를 확인하고 ( n=0가장 중요하지 않은 비트) 비트를 생성 1하거나 그에 0따라 결정합니다.
  • =0와 같은지 검사합니다 0. 입력 대리석이 같으면 오른쪽으로 밀리지 않고 똑바로 떨어집니다.
  • \/ 쓰레기통이므로 입력 대리석을 삼키고 아무것도 생산하지 않습니다.
  • 2D의 ASCII 코드는 -, 31의 ASCII 코드 169의 ASCII 코드입니다 i.
  • &nsynchronisers 있습니다. 싱크로 나이 저는 같은 것을 가진 모든 싱크로 나이저가 n구슬을 붙잡을 때까지 구슬을 멈춘다.

실제로, 내가하는 일은 세 개의 관련 문자를 세 개의 동기화 장치에 유지하고 입력에서 최하위 비트가 설정되는 방식에 따라 해당 문자를 해제하는 것입니다.

자세한 내용은 사양 초안을 참조하십시오 .


1
나는 이것을 정말로 좋아한다! Marbelous sounds fab 나는 곧 언젠가 그것을 확인해야 할 것이다 :)
Kezz101

3
@ Kezz101 여기에
Martin Ender

오 좋은! 정말 흥미로워 요
Kezz101

명령 행에서 메인 보드에 입력 할 수 있으므로이 보드를 그대로 사용할 수 있습니다.
Sparr

1
@overactor 흠, 모르겠다 ... 추가 문자를 출력하는 것은 (인쇄 할 수없는 경우에도) 여전히 출력 형식을 위반하는 것으로 보입니다. 그래도 메타 질문의 가치가있을 수 있습니다.
마틴 엔더

6

자바 스크립트 (ES6) 29-5 = 24

음의 힘을 지원합니다.

f=n=>(n&2?'-':'')+(n&1?'i':1)

ES5 :

function f(n){return (n&2?'-':'')+(n&1?'i':1)}

그렇습니다. 더 짧습니다 ( f=n=>[1,'i',-1,'-i'][n%4]). 그러나 덜 섹시하고 부정적인 힘을 지원하지 않습니다. 그것은 내가 생각하는 보너스에 달려 있습니다.
Michael M.

Nop, 29 바이트 이 코드에서는 음수가 지원됩니다.
Michael M.

JS에는 비트 &연산자가 있습니까? 그렇다면 &3실제 계수 -4 연산을 수행 할 수 있습니다 . 편집 : &2귀하의 답변에 사용되는 것처럼 보입니다 ...
feersum

5

파이썬 28 바이트-5 = 23

-ve 입력을 지원합니다.

람다 함수를 사용할 수 있다고 가정합니다 (FryAmTheEggman 감사합니다!).

lambda n:n%4/2*'-'+'1i'[n%2]

그렇지 않으면 31 바이트-5 = 26

print[1,"i",-1,"-i"][input()%4]

1
정확히 부를 수는 없습니다. 액세스 할 수있는 곳에 저장해야합니다. 따라서 foo=..., 또는 map(<your lambda>,range(10))의 값 목록을 가져 오도록 할 수 i^n있습니다 0-9.
FryAmTheEggman

2
기본적으로 함수 포인터가 더 명확하다면 : P
FryAmTheEggman

3
@DigitalTrauma : 예. 문자열 슬라이싱 트릭으로 더 잘 할 수는 있지만 예를 들면 다음과 같습니다 lambda n:'--1i'[n%4-2::2].
user2357112는 Monica

2
user2357112의 게시물을 번역하려면 '--1i'index 에서 시작하는 다른 모든 문자를 가져옵니다 n%4-2. 파이썬이 음의 인덱스를 얻으면 배열의 끝에서 왼쪽으로 많은 위치를 시작한 다음로 이동합니다 0. 이 방법은, 0그리고 1이제까지 때리지 마세요 -징후, 동안 34않습니다.
FryAmTheEggman

1
lambda n:n%4/2*'-'+'1i'[n%2]공간을 제거하고 더 짧습니다 :)
FryAmTheEggman

4

(이맥스) 리스프 – 34

재미를 위해 (Emacs) Lisp에서 :

(lambda(n)(elt[1 i -1 -i](% n 4)))

사용하려면 a defun또는를 사용하십시오 funcall.

(funcall
 (lambda (n) (elt [1 i -1 -i] (% n 4)))
 4) => 1

(mapcar
 (lambda(n)(elt[1 i -1 -i](% n 4)))
 [0 1 2 3 4 5 6 7 8])
 => (1 i -1 -i 1 i -1 -i 1)

4

APL (Dyalog) , 8 문자-15 보너스 = 점수 -7

내장 된 (따라서 금지 된) 함수는 0J1*⊢이지만 @blutorange의 method를 사용 합니다.

¯12○.5×○

도전 과제 저자 인 Kezz101 다음 과 같이 썼습니다 .

실수를 지원하면 유효한 복소수 형식으로 출력 할 수 있습니다.

이것은 aJbAPL이 복소수를 표시하는 일반적인 방법 인 복소수 형식으로 리턴 합니다.

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

설명

¯12○ 라디안 단위의 각도를 가진 단위 벡터를 찾습니다.

.5× 반번

 인수에 𝜋를 곱한 값 (원 상수)


3

순수 bash, 29 바이트-5 = 24

-ve 입력을 지원합니다.

a=(1 i -1 -i)
echo ${a[$1%4]}

3

Befunge-98, 41-5 = 36 35-5 = 30 32-5 = 27

&4%:01-`!4*+:2%'8*'1+\2/d*' +,,@

음의 정수를 지원합니다. 이 솔루션으로 상을 수상하지는 않지만 무엇이든 할 수 있습니다.

그것은 숫자를 입력으로 받아들이고, 모듈러스에 대해 약간의 속임수를 씁니다. 각 캐릭터가 무엇인지 결정하십시오.

나는 이것이 훨씬 더 골프 다운 될 수 있다고 확신합니다. 지금은 네거티브를 받아들이지 않지만 더 짧아 져 보너스 상실을 보완하는 또 다른 솔루션이 있습니다.

베 펀지 -98, 32 26 23

&4%:2%'8*'1+\2/d*' +,,@

편집 -이제 "-"가 ""에서 13 (0xd) 자 떨어져 있다는 사실을 이용합니다.

편집 2- 이제 다시 "i"가 '8"1"에서 56 (0x38 또는 ) 문자 라는 사실을 이용합니다 .


3

자바 8 점수 : 72

지금까지 최악의 골프 언어 인 Java! 골프 :

java.util.function.Function s=n->{new String[]{"i","-1","-i","1"}[n%4]};

넓히는:

class Complex{

    java.util.function.Function s = n -> {new String[]{"i","-1","-i","1"}[n%4]};

}

참고 : Java 8에는 익숙하지 않습니다. 아직 런타임이 없습니다. 구문 오류가 있으면 알려주십시오. 이것은 또한 나의 첫 번째 골프입니다.

편집 : 제거되었습니다 import.

편집 : 클래스 선언이 제거되었습니다.

점수 = 87-15 = 72 인 다른 답변

java.util.function.Function s=n->{Math.cos(n*Math.PI/2)+"+"+Math.sin(n*Math.PI/2)+"i"};

넓히는:

class Complex{

    java.util.function.Function s = n -> {Math.cos(n * Math.PI/2) + " + " + Math.sin(n * Math.PI/2) + "i"};

}

"import java.util. *"를 사용하여 일부를 저장할 수 있습니다.
Anubian Noob

@Anubian Noob 클래스 함수가 ​​패키지에 java.util.function없습니다 java.util(또는 잘못 되었습니까?).
TheNumberOne

그러나 당신이 할 경우 패키지에서 수단 가져 오기 다. 현재 패키지의 모든 클래스를 가져 오는 것처럼 . java.util.*.*fuction
Anubian Noob

5
@ Anubian Noob import은 해당 패키지의 클래스 만 가져옵니다. 해당 패키지의 패키지에서 클래스를 가져 오지 않습니다. 예를 들어 클래스 Function는 패키지에 java.util.function있지만 패키지 에는 없습니다 java.util.
TheNumberOne

오, 안타깝습니다.
Anubian Noob

3

MATLAB, 33 바이트-5 = 28

x={'i','-1','-i','1'};x(mod(n,4))

몇 바이트 더 많지만 (37-5 = 32) 실제로이 접근법이 더 좋습니다.

x='1i -';x((mod([n/2,n],2)>=1)+[3,1])

i^3이다 -i보다는,i , 단지 1 문자를 추가한다고 생각합니다. -다른 독자를위한 사이드 노트 : 첫 번째 규칙이 없으면 Matlab 솔루션의 길이는 3 자에 불과합니다.
데니스 Jaheruddin

네, 오타였습니다. 결정된! 알아 줘서 감사합니다 ... 적어도 두 번째 (좀 더 흥미로운) 방식은) 올바른 =입니다
스튜이 그리핀

3

C 77

main(){int n;scanf("%d",&n);char c[]={n%4>1?'-':' ',~n%2?'1':'i',0};puts(c);}

Ruslan 덕분에 개선

C 74-5 = 69

물론 가장 명백한 접근법

main(){unsigned n,*c[]={"1","i","-1","-i"};scanf("%d",&n);puts(c[n%4]);}

2
먼저 부정하기 때문에 괄호를 제거 n%2하고 ~대신 사용할 수 있습니다 .2를 사용하면 적어도에 대해 동일한 결과를 얻을 수 있습니다 . 그리고 C는 함수에 대한 반환 유형을 명시 적으로 정의 할 필요가 없으므로 처음에 제거 할 수 있습니다 . 또한 대신에 사용하십시오 . 따라서 -9 자입니다. !n%n<(1<<32)-1int 0'\0'
Ruslan

3

오캄 47

let m n=List.nth["1";"i";"-1";"-i"](n mod 4);;

수상 경력에 빛나는 솔루션은 아니지만 이것이 처음으로 코드 골프이기 때문에 내가하는 일을 정확히 알지 못합니다. 패턴 일치를 사용하려고했지만 58 이상이되었습니다.



2

루비 32-5 = 27

puts(%w[1 i -1 -i][gets.to_i%4])

부정적인 힘을 위해 작동합니다!


당신은 사소하게 이것을 더 골프 수 있습니다 puts %w[1 i -1 i][gets.to_i % 4].
histocrat

2

펄, 26-5 = 21

say qw(1 i -1 -i)[pop()%4]

독립형 프로그램 (명령 행의 인수) 또는 함수 본문으로 작동합니다.


2

자바 : 151 131-5 = 126

골프 :

class A{public static void main(String[]a){int n=Integer.parseInt(a[0]);System.out.print(n%4==0?"1":n%4==1?"i":n%4==2?"-1":"-i");}}

언 골프 드 :

class A {
    public static void main(String[] a) {
        int n = Integer.parseInt(a[0]);
        System.out.print(n % 4 == 0 ? "1" : n % 4 == 1 ? "i" : n % 4 == 2 ? "-1" : "-i");
    }
}

기능으로 : 72-5 = 67

골프 :

void f(int n){System.out.print(n%4==0?"1":n%4==1?"i":n%4==2?"-1":"-i");}

언 골프 드 :

public void f(int n) {
    System.out.print(n % 4 == 0 ? "1" : n % 4 == 1 ? "i" : n % 4 == 2 ? "-1" : "-i");
}

예, 또 다른 Java 응답-그 어느 때보 다도 악화되었습니다. 그러나 당신은 당신이 할 수있는 일을 ...

편집 : 기능 버전이 추가되었습니다.

편집 2 : 약간의 시행 착오 후에 사이클 허점을 탐색하지 않고 책으로 시도하는 버전이 있습니다. 그래서…

값 계산이 포함 된 Java : 146-15 = 131

골프 :

class B{public static void main(String[]a){float n=Float.parseFloat(a[0]);System.out.print(Math.cos((n*Math.PI)/2)+Math.sin((n*Math.PI)/2)+"i");}}

언 골프 드 :

class B {
    public static void main(String[] a) {
        float n = Float.parseFloat(a[0]);
        System.out.print(Math.cos((n * Math.PI) / 2) + Math.sin((n * Math.PI) / 2) + "i");
    }
}

(적어도, 나는 최고 보너스를 청구 할 수 있다고 생각하고 그렇지 않으면 나를 교정하십시오)


인수로 main에 전달하면 코드를 줄일 수 있습니다.
user902383

@ user902383 항상 기능을 만들 수있었습니다. 아마 두 버전도 게시 할 것입니다.
Rodolfo Dias

사실은 내가 당신이 가진 것, 그래서 그것을 구문 분석에 대해 생각했다int n = Integer.parseInt(a[0])
user902383

@ user902383 Daaaaamn도 기억하지 못했습니다. 엄지 손가락
Rodolfo Dias

2

파이썬-31

print[1,'i',-1,'-i'][input()%4]

나는 최근에 파이썬을 배우기 시작했다. 나는 그것이 좋지 않다는 것을 알고 있지만, 내가 할 수있는 최선입니다.


2

하스켈 GHCi, 29 바이트-15 = 14

i p=[cos(p*pi/2),sin(p*pi/2)]

용법:

*Main> i 0
[1.0,0.0]
*Main> i pi
[0.22058404074969779,-0.9753679720836315]
*Main> i (-6.4)
[-0.8090169943749477,0.5877852522924728]

2

R , 29-5 = 24 바이트

c(1,"i",-1,"-i")[scan()%%4+1]

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

위의 대부분의 방법과 동일하게 모듈러스 4를 취하고 R의 배열은 1- 인덱스되므로 1을 증가시킵니다. 음의 정수에도 적용됩니다.

혼합 출력에 대해 걱정했지만 Giuseppe는 R이 혼합 될 때 R이 숫자 유형을 문자열 유형으로 강제 변환한다고 지적했습니다.



@Giuseppe 완전히 비워졌습니다. 그것에 대한 나의 관심사는 출력이 기술적으로 혼합되고 반 문자열, 반 숫자라는 것입니다.
Sumner

아니, R 은 numeric유형 character이 혼합되면 자동으로 유형을 강제 합니다 ! Hadley의 책은 이것을 꽤 잘 설명합니다-Ctrl + F를 "Coercion"으로 돌리면 알 수 있지만 전체 책은 읽을 가치가 있습니다 (골프가 아닌 목적으로 주로 사용되지만 때로는 트릭을 선택하는 경우도 있습니다). )
Giuseppe


1

하스켈, 29 바이트-5 = 24

f n=words"1 i -1 -i"!!mod n 4

부정적인 힘을 위해 작동합니다.

나는 pointfree 버전이 효과가 있었지만 실제로는 더 길다.

f=(words"1 i -1 -i"!!).(`mod`4)

1

클로저 ( 64 54 31 문자)

(defn i2n[n](println(case(mod n 4) 1 "i" 2 "-1" 3 "-i" 0 "1")))

편집하다

@SeanAllred의 제안에 따라 case함수 대신 리터럴 벡터를 사용하는 버전이 있습니다.

(defn i2n[n](println (["1" "i" "-1" "-i"] (mod n 4))))

편집 2

결과 컬렉션을 인쇄하기 위해 REPL을 계산하고 #()바로 가기를 사용하여 함수를 코딩하면

#(["1" "i" "-1" "-i"](mod % 4))

(실제로 함수가 생성 된 결과를 반환하기 때문에 실제로 Clojure / Lisp-ish가 훨씬 더 많으며 map,

(map #(["1" "i" "-1" "-i"](mod % 4)) [0 1 2 3 4 5 6 7 8])

인쇄

("1" "i" "-1" "-i" "1" "i" "-1" "-i" "1")

공유하고 즐기십시오.


선택 구조를 사용하는 대신 내 대답 과 같이 명시 적 배열을 사용할 수 없습니까?
Sean Allred


1

C 105는 117이었다

char c[2];
int main()
{
int n,i,j=0;scanf("%d",&n);i=n%4;
i>1?c[j++]='-':c[j+1]='\0';
c[j]=i&1?'i':'1';
puts(c);
}

당신이 후 할당을 괄호로해야하기 때문에 심지어 컴파일되지 않습니다 :에서 ?:사용하는 시점 무엇을, 또한 일반 C.에 문 0==0이 하나의 문자를 사용할 수있는 경우는 1? 그리고 앞에 괄호가 필요하지 않습니다 ?. 또한 마지막 ?:문장은로 단축 될 수 있습니다 c[j]=i&1?'i':'1';.
Ruslan

@Ruslan CodeBlocks Mingw에는 i & 0 주위에 단 하나의 경고 만 있습니다. i & 0 == 0은 짝수 검정입니다. 결과가 0 인 경우에는 0입니다. 그렇지 않으면 1입니다.
bacchusbeale

예, 그러나 0==0그것이 동일 할 때 사용하는 요점은 무엇 1입니까? ==보다 우선 순위가 높다는 점 을 명심 &하십시오 (i&0)==0.
Ruslan

1

PARI / GP , 26-5 = 21

n->Str([1,I,-1,-I][n%4+1])

n->cos(t=Pi*n/2)+I*sin(t)한 문자가 짧지 만 정확한 답변을 처리하지 못합니다. 물론 n->I^n허용되지 않으며 아마도 PARI도 가능 powIs합니다.


1

젤리 , 2-20 = -18 바이트

ı*

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

그것은 사용하지 않는 i ^ x내장을하지만위한 내장 매크로를 사용 1j하고 **있으므로 허용 확실하지 않은 경우.


"귀하의 언어가 복소수를 지원하는 경우이를 해결하는 함수 나 산술을 사용하지 마십시오." 나는 그것이 분명하다고 생각합니다.
완전히 인간적인

@totallyhuman 글쎄, 1j 리터럴 이 금지되어 있는지 확실하지 않습니까?
Outgolfer Erik

예, 그러나 산술 ( *)은입니다.
완전히 인간적인

1
@totallyhuman 흠, 아마도 아래에 다른 버전을 추가 할 것입니다. "이 기능을 수행 할 수있는 함수 나 산술을 사용하지 마십시오"는이 정확한 작업을 수행하기 위해 내장 기능을 사용할 수 없다는 것을 암시하는 것 같습니다 ... BTW는 그가 말한 방식으로 리터럴 을 사용 하도록 권장 한다고 생각합니다 1j.
Outgolfer Erik

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