정수입니까?


26

소수 부분이없는 음이 아닌 정수이면 숫자는 전체 입니다. 그래서 08233494.0전체이며, 동안 1.10.001233494.999되지 않습니다.


입력

언어의 기본 기본 / 인코딩에있는 부동 소수점 숫자

예를 들어,의 기본 정수 표현 바이너리 람다 미적분이 될 것 교회 숫자 . 그러나 대한 기본 정수 표현 파이썬 입니다 기본 10 진수 가 아니라 단항 .

산출

truthy의 입력이 있으면 전체 값은 falsy 그 값이 아닌 경우.

언어가 소수 자릿수 (예 : 8 자리) 만 지원하는 경우 1.000000002전체로 간주 할 수 있습니다.

입력 및 출력은 표준 I / O 방법을 통해 수행 할 수 있습니다 .


테스트 사례

Input        -> Output
332          -> true
33.2         -> false
128239847    -> true
0.128239847  -> false
0            -> true
0.000000000  -> true
1.111111111  -> false
-3.1415926   -> false
-3           -> false

채점

와 마찬가지로 , 짧은 제출 승리. 행운을 빕니다!


2
@StephenLeppik 바닐라 패리티 챌린지, Hello World 또는 Truth Machine보다 쉽지 않습니다. (사실, 대부분의 경우보다 어렵습니다.)
MD XF

분수를 나타내는 두 개의 숫자로 입력 할 수 있습니까?
LyricLy

@LyricLy 아니요, 일부 언어의 경우 훨씬 쉬워 지거나 다른 언어에는 필요하지 않습니다.
MD XF

정수는 음이 아닌 정수입니다. 이것을 반영하여 첫 문장을 업데이트하십시오. 정수가 음수가 아니고 음수에 대한 허위 출력이 유효한 방법을 표시하려면 음수 테스트 사례를 추가 할 수 있습니다.
토마스 워드

1
@ThomasWard, 그 위키 백과 기사는 당신에게 완전히 동의하지 않는 것 같습니다 : "자연수에서 0을 제외하는 텍스트는 자연수를 0과 함께 정수로 지칭하지만 다른 글에서는 그 용어는 정수 대신에 사용됩니다 (음수 포함) ". 정수에 대해 묻는 제목을 읽었습니다.
ilkkachu

답변:






6

껍질 , 3 바이트

£ΘN

온라인으로 사용해보십시오! 세 번째 테스트 사례는 TIO에서 시간 초과되어 몇 자리 수를 잘라 냈습니다. 로컬로 실행하려고 시도했지만 6GB 이상의 메모리를 사용하고 컴퓨터가 더듬기 시작한지 ​​몇 분 후에 종료했습니다. 이론적으로는 어느 시점에서 끝나야합니다 ...

설명

이것은 챌린지 설명과 매우 일치합니다.

£ΘN  Implicit input: a number.
  N  The infinite list [1,2,3,4...
 Θ   Prepend 0: [0,1,2,3,4...
£    Is the input an element of this list?

λx → floor(x) == abs(x)Husk의 모양은 무엇입니까 ?
Lynn

@Lynn §=⌊a이므로 1 바이트 더 길어집니다.
Zgarb


5

/// , 94 바이트, 하드 코딩 된 입력

/=/\/x://:/\/\///-0/-:.0/.:.|/|:-|/|:0=1=2=3=4=5=6=7=8=9=|x/|:||/true:x:/-:/.:/|/+:++/false/||

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

두 개의 종단 수직선 사이의 입력 ( ||)

스트립 -00...0.00...0에, 변환 나머지 숫자 x들 다음, 잔여 개수가 아직 있는지 여부를 테스트 x후들 .또는 -뒤에 있지 ..

이 언어는 기본 truthy / falsey 값이없는 현재 출력되기 때문에 truthy 및 falsey로 계산 있는지에 따라 7 바이트까지 저장할 수 truefalse하지만, 예를 들어, 변경 수, TF87 바이트가 허용 않다면.


5

옥타브 , 15 바이트

@(x)any(x==0:x)

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

이것은 @flawr의 Haskell answer에 사용 된 접근 방식을 기반으로합니다 .

그것은 15까지 바이트 수를 제공하는 동안, 그것은에서 모든 정수의 목록 작성, (악의 의도 없음) 부끄럽게 비효율적 0으로를 x하고있는 경우보고 x에 포함된다.


옥타브 , 18 바이트

@(x)fix(x)==abs(x)

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

배정도 숫자로 입력을받습니다. 전체 인 경우 true를 리턴합니다.

반올림 된 입력이 입력 크기와 같은지 확인합니다. 숫자가 양수이고 전체 인 경우에만 해당됩니다.


옥타브 , 18 바이트

@(x)~mod(x,+(x>0))

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

18 바이트의 대체 솔루션입니다. 슬프게도 mod옥타브의 기능은 암시 적으로 변환하지 않습니다 boolA를 double이 때문에, +( )비교보다 더 큰 주위에 필요합니다. 그렇지 않으면이 솔루션은 더 짧을 것입니다.


옥타브 , 18 바이트

@(x)x>=0&~mod(x,1)

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

그리고 다른 하나 ... 나는 18 바이트보다 낮아질 수없는 것 같습니다 . >=just 대신 0을 true로 허용해야하기 때문에 모두 >.



4

아세토 , 6 바이트

rfdi±=p
r은 입력을 잡는다
f는 그것을 float로 변환
d와 i를 복제하여 정수로 변환
± 절대 값을 푸시합니다 (b / c는 음수 일 수 없음)
= 그들이 같은지 확인
p는 결과를 인쇄합니다

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



4

QBIC , 17 바이트

?(:=int(a))*(a>0)

설명

?             PRINT
 (:=int(a))     if the input (: assigns the cmd line param to 'a') equals itself 
                cast to int, -1 else 0
 *              times
 (a>0)          if the input > 0, -1 else 0

두 검사 중 하나라도 실패하면 0을 반환합니다. 두 경우 모두 -1 x -1 = 1을 반환



4

C (gcc), 27 28 27 25 바이트

PrincePolka 덕분에 -2

#define g(f)!fmod(f,f>=0)

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

g매개 변수 f(모든 유형) 를 취하는 매크로 "함수" 를 정의합니다 . 그런 다음 캐스팅 f mod 1이 0인지, f음이 아닌지 확인합니다 .


난 당신이의 크기를 포함해야합니다 생각 includeFMOD에 정의되어 있기 때문에, 당신의 바이트 수 지시문을 math.h: 이 참조
HatsuPointerKun

@HatsuPointerKun 그것 없이도
Mr. Xcoder

2
Windows 기반 C 배포판에서 -lm이 필요하지 않다고 생각합니다 (내 컴퓨터에서 작동)
Conor O'Brien

25, #define g (f)! fmod (f, f> = 0)
PrincePolka

4

C #, Java : 43 바이트

Zacharý 덕분에
-1 바이트 TheLetalCoder 덕분에 -1 바이트

int w(float n){return(n==(int)n&&n>=0)?1:0;}

C #에는 특별한 33 바이트 최적화 기능이있어 java에서는 할 수 없습니다.

bool w(float n){return(int)n==n;}

시험용

C # 코드 :

class Program {
    int w(float n){return(n==(int)n&&n>=0)?1:0;}

    static void Main(string[] args)
    {
        var p = new Program();
        float[] fTab = new float[]{
            332,33.2f,128239847,0.128239847f,0,0.0000f,1.1111111111f,-3.1415926f,-3
        };
        foreach (float f in fTab) {
            Console.WriteLine(string.Format("{0} = {1}", f, (p.w(f) != 0).ToString()));
        }
        Console.ReadKey();
    }
}

자바 코드 :

public class MainApp {
    int w(float n){return(n==(int)n&&n>=0)?1:0;}

    public static void main(String[]a) {
        MainApp m = new MainApp();
        float testArr[] = new float[]{
                332,33.2f,128239847,0.128239847f,0,0.0000f,1.1111111111f,-3.1415926f,-3
        };

        for (float v : testArr) {
            System.out.println(v + " = " + String.valueOf(m.w(v)!=0));
        }
    }
}

return와 사이의 공백을 제거 할 수 있다고 생각합니다 (.
Zacharý

a를 반환 bool하면 삼항이 필요 없습니다.
TheLethalCoder

@TheLethalCoder은 bool자바에 존재하지 않습니다
HatsuPointerKun

Java / C #을 잘 모르지만 만들 수 return(int)n==n있습니까? 아니면 n==n그냥 아닌 오히려 int로 캐스팅 n됩니까?
Zacharý

1
검사를 취소하고 부울 연산자를 비트 단위 int w(float n){return(int)n!=n|n<0?0:1;}( 40 바이트 )로 변경하여 Java 7 응답을 3 바이트 씩 낮출 수 있습니다 . Java 8 람다 n->(int)n==n&n>=0( 17 바이트 ) 보다 짧 으며 C # 답변에도 lambda : n=>(int)n==n&n>=0(또한 17 바이트 ) 와 동일 합니다.
케빈 크루이 센

4

Google 스프레드 시트, 10 바이트

셀에서 입력을 A1호출하고 호출 셀로 출력 하는 익명의 워크 시트 함수입니다 .

=A1=Int(A1


3

Ly , 35 47 바이트

ir"-"=[0u;]pr[["0"=![psp>l"."=[ppr!u;]p<2$]pp]]

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

Ly는 float 지원을 가지고 있지만 현재 float를 생성하는 유일한 방법은 나누기를 수행하는 것입니다. float을 입력으로 취할 수있는 방법이 없으므로 대신 문자열을 수동으로 확인해야했습니다.

음수에 대한 지원을 추가하여 13 바이트가 손실되었습니다.


3

자바 스크립트, 14

n=>!(n<0||n%1)

13 바이트 :n=>!(n-(n|0))
Ismael Miguel

@IsmaelMiguel. 음수에는 작동하지 않습니다.

@ThePirateBay 어떤 정확한 숫자입니까? 5, 5.1, -5, -5.1, 0, 0.1 및 -0.1로 시도했습니다.
Ismael Miguel

@IsmaelMiguel. (n=>!(n-(n|0)))(-3)을 반환 true하지만을 반환해야합니다 false. 마지막 테스트 사례를 참조하십시오.

오, 당신은 맞습니다 : / 나는 질문을 잘못 읽었습니다 : /
Ismael Miguel




3

C #, 40 37 29 바이트

bool z(float x)=>x%1==0&x>=0;

@Dennis_E 덕분에 8 바이트가 절약되었습니다!

이전 답변 (37 바이트)

bool z(float x){return x%1==0&&x>=0;}

오래된 대답 (40 바이트) :

bool z(float x){return (int)x==x&&x>=0;}

2
30 바이트 : 29 바이트에 bool z(float x)=>x%1==0&&x>=0;싱글 &을 사용할 수 있습니다
Dennis_E

@Dennis_E 감사합니다!
yummypasta

x=>x%1==0&x>=0짧고 컴파일Func<float, bool>
TheLethalCoder

3

자바 스크립트, 17 15 바이트

_=>_<0?0:_==~~_

_=>_<0?0:_==(_|0)

실수를 저지른 edc65에게 감사합니다.


3

확장되지 않은 Sinclair ZX81, 20 바이트

 1 INPUT A
 2 PRINT ABS A=INT A

BASIC이 토큰 화되었으므로 20 바이트

숫자가 양수이고 입력 한 숫자 값이 정수 값과 같으면 간단히 1 (true)을 출력합니다. 해당 조건 중 하나의 출력 0도 충족되지 않습니다.


1
이것이 토큰 화 된 언어입니까? 그렇다면 대답에 표시해야합니다.
Taylor Scott

1
PRINT과 같은 죄송합니다, 토큰 화 그렇습니다에, 즉, 입력, RAM의 1 바이트도> = 의한 싱클레어 BASIC의 ~ 특질 ~ 구성 기능에
숀 Bebbers

1
특히, 각 줄 번호는 5 바이트 + 1 newline( \r\nZX81에서와 동일)이며 공백은 일반적으로 Sinclair '원키 프레스'입력 시스템으로 인해 키워드에 이미 포함되어 있으므로 바이트로 계산되지 않습니다. 실행시에는 값을 ; A에 넣을 때 더 많은 바이트가 필요 합니다 var stack. 각 숫자 값은 항상 5 바이트의 메모리라고 생각합니다.
숀 비버

1
너무 ZX 스펙트럼
edc65

1
내가 아는 한 토큰 화 모드는 정확히 동일합니다 (스펙트럼에는 더 많은 코드가 있습니다). 리터럴 숫자는 6 바이트입니다. '숫자 태그'바이트 다음에 5 바이트 독점 부동 소수점 형식으로 인코딩 된 값)
edc65

3

C, C ++ : 38 37 바이트

Zacharý 덕분에 -1 바이트

ceilingcat 덕분에 -1 바이트

int w(float n){return(int)n==n&n>=0;}

시험용

C : 온라인 시도

C 코드 :

#include <stdio.h>
int main() {
    float f[] = { 332,33.2f,128239847,0.128239847f,0,0.0000f,1.1111111111f,-3.1415926f,-3 };
    int t;
    for ( t = 0; t < 9; ++t) {
        printf("%f = %s\n", f[t], w(f[t])?"true":"false");
    }
    return 0;
}

C ++ 코드 :

#include <iostream>
int main() {
    std::initializer_list <std::pair<float,bool>> test{
        {332.f,true}, {33.2f,false}, {128239847.f,true}, {0.128239847f,false}, {0.f,true}, {0.000000f,true}, {1.111111f,false}, {-3.1415926f,false}, {-3.f,false}
    };

    for (const auto& a : test) {
        if (w(a.first) != a.second) {
            std::cout << "Error with " << a.first << '\n';
        }
    }
    return 0;
}

1
이것은 최대 작동합니다 INT_MAX. (나는 정말로 신경 쓰지 않지만 어떤 사람들은 그렇게합니다.)
MD XF

return(int)n==n...작동하도록 변경 하시겠습니까 ?
Zacharý

부호없는 1 대신 부호없는 int를 사용하여 1 바이트를 면도 할 수 있습니다 ( >=0테스트 가 필요하지 않음 ) return(unsigned)n==n; .C에서는 추가 4 바이트에 대해 반환 유형을 생략 할 수 있습니다.
Toby Speight

: 당신은 8 바이트 이상 절약 할 수 있습니다w(float n){n=n==(int)n&&n>=0;}
요한 뒤 투아




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