태그 보관물: integer

integer

부호를 출력하십시오 1 N이 음수이면 출력 -1 N이 0이면

숫자 N이 주어지면 N의 부호 를 출력하십시오 .

  • N이 양수이면 출력 1
  • N이 음수이면 출력 -1
  • N이 0이면 출력 0

N은 선택한 언어에서 표현 가능한 정수 범위 내의 정수입니다.



답변

레티 나 , 9 바이트

[1-9].*
1

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

0이 아닌 숫자와 그 뒤의 모든 문자를로 바꿉니다 1. 이것은 잠재적 인 선행을 -그대로두고 0자신을 제외한 모든 숫자 를 절대 값으로 변경합니다 1.


답변

C (GCC), 24 23 22 18 바이트

바이트를 저장해 준 @aross와 @Steadybox에게 감사합니다!

f(n){n=!!n|n>>31;}

모든 시스템 또는 컴파일러에서 작동한다고 보장 할 수는 없으며 TIO 에서 작동합니다 .


답변

Mathematica, 4 바이트

Clip

내장을 사용하지 않고 Sign여전히 4 바이트를 스코어링하는 것은 어떻습니까? 😉

Clip하나의 인자 클립 (또는 클램프)의 입력 값으로 -1하고 1. 입력은 정수일 뿐이므로를 사용하는 것과 같습니다 Sign.


답변

암소 225 213 201 바이트

oomMOOmoOmoOmoOmoOMoOMoOmOomOomOoMoOMMMmoOMMMMOOMOomOo
mOoMOomoOmoOmoomOomOoMMMmoOmoOmoOMMMMOOOOOmoOMOoMOomOo
mOomOoMoOMMMmoOMMMMOOMOomOomOoMoOmoOmoOmoomoOmoomOomOo
mOomoomoOMOOmoOmoOmoOMOoMMMOOOmooMMMOOM

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

이 코드가 작동하는 방식은 더 큰 숫자를 더하거나 빼고 마지막으로 작동 한 숫자를 확인하여 부호를 결정하는 것입니다. 0이 아닌 정수가 주어지면 먼저 1을 빼고 2를 더한 다음 3을 빼면 결국 0에 도달합니다. 0에서 시작하는 값으로 2를 더하고 빼서 상태를 추적하십시오. 예:

-5  - 1  = -6  (current state: 0 + 2 = 2)
-6  + 2  = -4  (current state: 2 - 2 = 0)
-4  - 3  = -7  (current state: 0 + 2 = 2)
-7  + 4  = -3  (current state: 2 - 2 = 0)
-3  - 5  = -8  (current state: 0 + 2 = 2)
-8  + 6  = -2  (current state: 2 - 2 = 0)
-2  - 7  = -9  (current state: 0 + 2 = 2)
-9  + 8  = -1  (current state: 2 - 2 = 0)
-1  - 9  = -10 (current state: 0 + 2 = 2)
-10 + 10 =  0  (current state: 2 - 2 = 0)
value is now at 0.  state - 1 = 0 - 1 = -1
sign of original number is -1

완료되면 주에서 1을 빼고 양수 또는 음수 부호를 얻습니다. 원래 숫자가 0이면이 작업을 방해하지 않고 0 만 인쇄하십시오.

상해:

oom                                        ;Read an integer into [0]
MOO                                        ;Loop while [0] is non-empty
    moOmoOmoOmoOMoOMoOmOomOomOo            ;    Decrement [4] twice
    MoOMMMmoOMMM                           ;    Increment [1], then copy [1] to [2]
    MOO                                    ;    Loop while [2] is non-empty
        MOomOomOoMOomoOmoO                 ;        Decrement [0] and [2]
    moo                                    ;    End loop now that [2] is empty
    mOomOoMMMmoOmoOmoOMMM                  ;    Navigate to [0], and copy to [3]
    MOO                                    ;    Perform the next steps only if [3] is non-zero
        OOOmoOMOoMOomOomOomOoMoOMMMmoOMMM  ;        Clear [3], increment [4] twice, increment [1], and copy it to [2]
        MOO                                ;        Loop while [2] is non-empty
            MOomOomOoMoOmoOmoO             ;            Decrement [2] and increment [0]
        moo                                ;        End loop now that [2] is empty
    moO                                    ;        Navigate back to [3]
    moo                                    ;    End the condition
    mOomOomOo                              ;    Navigate back to [0]
moo                                        ;End loop once [0] is empty.
moO                                        ;Navigate to [1]. If [1] is 0, then input was 0.  Otherwise, [4] contains (sign of [0] + 1)
MOO                                        ;Perform the next steps only if [1] is non-zero
    moOmoOmoOMOoMMMOOO                     ;    Navigate to [4], copy it to the register, and clear [4].
moo                                        ;End condition
MMMOOM                                     ;If the register contains something (which is true iff the condition ran), paste it and print it.  Otherwise, no-op and print 0.

나는 아직도 골프를 실험하고 있습니다 (COW에서의 골프는 다소 어렵다는 사실에 놀랄 것입니다). 이는 앞으로 몇 바이트 더 떨어질 수 있습니다.


답변

Cubix , 10 바이트

(W0^I?>O2@

온라인으로 테스트하십시오!

이 코드는 다음 큐브 네트에 래핑됩니다.

    ( W
    0 ^
I ? > O 2 @ . .
. . . . . . . .
    . .
    . .

그런 다음을 시작으로 I동쪽을 향한 IP (명령 포인터)로 코드를 실행합니다 . ISTDIN에서 부호있는 정수를 입력하여 스택으로 푸시합니다.

다음 명령은입니다 ?.이 명령은 최상위 항목의 부호에 따라 IP 방향을 변경합니다. 입력이 0이면 다음 코드를 통해 계속 같은 방향으로 이동합니다.

  • >-IP가 동쪽을 가리 키도록합니다. (우리가 이미 동쪽으로 가고 있기 때문에 No-op.)
  • O -상단 항목을 정수로 출력합니다.
  • 2-2를 스택으로 밉니다. 이것은 실질적으로 아무런 문제가 없습니다. 왜냐하면 …
  • @ -프로그램을 종료합니다.

입력이 음수이면 IP가 왼쪽에서 왼쪽으로 바뀝니다 ?. 이것은 큐브이므로 IP는 0두 번째 행에서 동쪽으로 이동합니다. 0리터럴 0을 푸시하면이 코드가 실행됩니다.

  • ^ -IP 북쪽을 가리 킵니다.
  • W -왼쪽의 한 지점에서 IP를 “측면”합니다.
  • ( -최상위 항목을 줄입니다.

TOS는 이제 -1이고 IP는 큐브에 .닿을 때까지 큐브를 감싸지 않습니다 >. 위에서 언급 한 것과 동일한 출력 코드를 실행하여 outputting -1합니다.

입력이 양수인 경우 하나의 예외를 제외하고 음수 입력과 동일한 상황이 발생합니다. IP가에서 왼쪽 대신에 오른쪽으로 바뀌고 ?큐브를로 감싸서 2리터럴 2를 푸시합니다. 그러면 1이 감소합니다. 출력으로 보냈습니다.


답변

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

Math.sign

똑바로.

내장되지 않은 가장 짧은 것은 13 바이트입니다.

n=>n>0|-(n<0)

@Neil 덕분에 이것은 바이트 단위로 골프를 칠 수 있지만 32 비트 정수로만 작업해야합니다.

n=>n>0|n>>31

아니면 할 수 있습니다

n=>n>0?1:!n-1

더 골프 타는 것 같지만 어떻게 해야할지 모르겠습니다.


답변

APL (Dyalog APL) , 1 바이트

복소수에서도 작동하며 1∠ θ를 반환합니다 .

×

TryAPL 온라인!


해당 내장 기능이 없으면 정수 (OP 당) :

¯11⌊⊢

¯1⌈ 부정적인 것 중 가장 큰 것

1⌊ 하나의 가장 작은

논쟁 거리

TryAPL 온라인!

… 그리고 일반적인 것 :

>∘0-<∘0

>∘0 0보다 큰

- 마이너스

<∘0 0보다 작은

TryAPL 온라인!