क्या यह पूरी संख्या है?


26

यदि कोई गैर-नकारात्मक पूर्णांक है, तो कोई संख्या पूर्ण नहीं है जिसमें कोई दशमलव भाग नहीं है। तो 0और 8और 233494.0पूरे कर रहे हैं, जबकि 1.1और 0.001और 233494.999नहीं कर रहे हैं।


इनपुट

आपकी भाषा के डिफ़ॉल्ट आधार / एन्कोडिंग में एक फ्लोटिंग-पॉइंट नंबर।

उदाहरण के लिए, के लिए डिफ़ॉल्ट पूर्णांक प्रतिनिधित्व द्विआधारी लैम्ब्डा पथरी होगा चर्च अंकों के । लेकिन के लिए डिफ़ॉल्ट पूर्णांक प्रतिनिधित्व अजगर है आधार 10 दशमलव , नहीं एकल

उत्पादन

एक सत्य मान यदि इनपुट संपूर्ण है, तो एक मिथ्या मूल्य यदि यह नहीं है।

ध्यान दें कि यदि आपकी भाषा केवल 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 यह वेनिला समानता चुनौती, या हैलो वर्ल्ड, या ट्रुथ मशीन से आसान नहीं है। (वास्तव में, यह उन लोगों की तुलना में कठिन है।)
एमडी एक्सएफ

क्या हम एक अंश का प्रतिनिधित्व करते हुए दो संख्याओं के रूप में इनपुट ले सकते हैं?
LyricLy

@LyricLy नहीं, या तो कुछ भाषाओं के लिए बहुत आसान होगा या दूसरों के लिए अनावश्यक।
एमडी एक्सएफ

ध्यान दें कि पूरे नंबर गैर-नकारात्मक पूर्णांक हैं। इसे दर्शाने के लिए कृपया अपना पहला वाक्य अपडेट करें। और आप नकारात्मक संख्या परीक्षण मामलों में जोड़ सकते हैं यदि आप यह दिखाना चाहते हैं कि कैसे पूरी संख्याएं नकारात्मक नहीं हैं और नकारात्मक संख्याओं के लिए मिथ्या आउटपुट वैध हैं।
थॉमस वार्ड

1
@ थोमसवर्ड, विकिपीडिया लेख आपको पूरी तरह से सहमत नहीं प्रतीत होता है: "प्राकृतिक संख्याओं से शून्य को बाहर करने वाले ग्रंथों को कभी-कभी प्राकृतिक संख्याओं के साथ-साथ पूरे संख्याओं के रूप में संदर्भित किया जाता है, लेकिन अन्य लेखन में, इस शब्द का उपयोग पूर्णांकों के लिए किया जाता है। (नकारात्मक पूर्णांक सहित) "। पूर्णांक के बारे में पूछते हुए मैंने शीर्षक पढ़ा।
ilkachachu

जवाबों:


13

एपीएल (डायलॉग) , 3 बाइट्स

⌊≡|

इसे ऑनलाइन आज़माएं!

ध्यान दें कि f←तकनीकी सीमाओं के कारण टीआईओ लिंक में पूर्व निर्धारित किया गया है, लेकिन इसकी सामान्य रूप से आवश्यकता नहीं है।


यह सुरुचिपूर्ण है! मुझे नहीं पता कि मैंने अपने जवाब में अनावश्यक सीलिंग क्यों जोड़ी। ....
गैलेन इवानोव

4
@GalenIvanov यह सिर्फ है floor(n) == abs(n)
निकोलफर


11

वोल्फ्राम भाषा (गणितज्ञ) , Language १५ १४ बाइट्स

एक पेड़ के लिए धन्यवाद 1 बाइट बचाया!

#>=0==#~Mod~1&

इसे ऑनलाइन आज़माएं!

पहला गणित विषय उत्तर / ओ /

मैथेमेटिका, 15 बाइट्स

@ उपयोगकर्ता 202729 को 2 बाइट्स धन्यवाद सहेजा गया!

#==⌊Abs@#⌋&


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)हुस्न में?
लिन

@ लीन वह होगा §=⌊a, इसलिए एक बाइट लंबी होगी।
जरगब


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बाद में आई है .या -नहीं .

7 बाइट्स तक की बचत हो सकती है जो इस बात पर निर्भर करता है कि सत्य और गलत के रूप में क्या गिना जाता है क्योंकि इस भाषा में मूल सत्य / गलत मूल्य नहीं हैं, वर्तमान में आउटपुट है trueऔर falseलेकिन उदाहरण के लिए, Tऔर F87 बाइट्स के लिए बदल सकता है, अगर इसकी अनुमति है।


5

ऑक्टेव , 15 बाइट्स

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

इसे ऑनलाइन आज़माएं!

यह एक @ त्रुटिपूर्ण हास्केल उत्तर में प्रयुक्त दृष्टिकोण पर आधारित है ।

हालांकि यह बाइट की संख्या को 15 तक नीचे लाता है, यह शर्मनाक अक्षम्य (कोई अपराध नहीं है), हर पूर्णांक की एक सूची बनाता 0है xऔर xभीतर से देखने पर देखता है।


ऑक्टेव , 18 बाइट्स

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

इसे ऑनलाइन आज़माएं!

एक दोहरी परिशुद्धता संख्या के रूप में इनपुट लेता है। अगर पूरा सच लौटाता है।

जांचता है कि राउंड किए गए इनपुट के परिमाण के बराबर है या नहीं। यह केवल तभी होगा जब संख्या सकारात्मक और संपूर्ण होगी।


ऑक्टेव , 18 बाइट्स

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

इसे ऑनलाइन आज़माएं!

18 बाइट्स के लिए एक वैकल्पिक समाधान। दुःख की बात यह modहै कि ऑक्टेव में फंक्शनल रूप से ए boolको कन्वर्ट नहीं किया जा सकता है double, इसलिए इसकी +( )तुलना तुलना में अधिक होनी चाहिए। अन्यथा यह समाधान छोटा होता।


ऑक्टेव , 18 बाइट्स

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

इसे ऑनलाइन आज़माएं!

और एक और एक ... मैं 18 बाइट्स से कम नहीं लग सकता । केवल 0 के >=बजाय के साथ सच होने के लिए अनुमति देने के कारण सभी >



4

एसीटो , 6 बाइट्स

rfdi±=p
आर ग्रेस इनपुट
f इसे एक फ्लोट में परिवर्तित करता है
d और i इसे डुप्लिकेट करता है और इसे एक पूर्णांक में परिवर्तित करता है
± इसके पूर्ण मूल्य को धक्का देता है (b / c ऋणात्मक नहीं हो सकता है)
= जाँच करें कि क्या वे समान हैं
पी परिणाम को प्रिंट करता है

इसे ऑनलाइन आज़माएं!



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

सी (जीसीसी), 27 28 27 25 बाइट्स

-2 प्रिंसपॉलका को धन्यवाद

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

इसे ऑनलाइन आज़माएं!

एक मैक्रो "फ़ंक्शन" को परिभाषित करता है gजो एक पैरामीटर f(किसी भी प्रकार का) लेता है । फिर जाँचता है कि क्या कास्टिंग f mod 1शून्य है, और यदि fगैर-नकारात्मक है।


मुझे लगता है कि आपको includeअपने बाइट की गिनती में निर्देश के आकार को शामिल करना आवश्यक है , क्योंकि fmod को परिभाषित किया गया है math.h: वहाँ देखें
HatsuPointerKun

@HatsuPointerKun यह इसके बिना भी
श्री एक्सकोडर

2
मुझे नहीं लगता कि आपको विंडोज-आधारित सी डिस्ट्रिब्यूशन (मेरी मशीन पर काम करता है) पर क्लिक करें
कॉनर ओ'ब्रायन

25, # डेफिन जी (एफ)! फमोड (एफ, एफ> = 0)
प्रिंसपोलका

4

सी #, जावा: 43 बाइट्स

-1 बाइट की बदौलत Zacharý
-1 बाइट की बदौलत TheLetalCoder का शुक्रिया

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

C # में एक विशेष 33 बाइट्स अनुकूलन है जो आप जावा में नहीं कर सकते हैं:

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ý

वापसी boolऔर ternary के लिए कोई ज़रूरत नहीं है।
द लीथेलकोडर

@ TheLethalCoder boolजावा में मौजूद नहीं है
HatsuPointerKun

मैं जावा / सी # को अच्छी तरह से नहीं जानता, लेकिन क्या आप इसे बना सकते हैं return(int)n==n? या कि n==nसिर्फ एक के बजाय एक इंट करने के लिए डाली जाएगी n?
Zacharý

1
आप चेक को उल्टा करके और बूलियन ऑपरेटर को बिटवाइज़ एक: int w(float n){return(int)n!=n|n<0?0:1;}( 40 बाइट्स ) में बदलकर जावा 7 उत्तर को 3 बाइट्स से कम कर सकते हैं । जावा 8 लैम्ब्डा के रूप में यह और भी छोटा है: n->(int)n==n&n>=0( 17 बाइट्स ) , और वही लैम्ब्डा के रूप में सी # जवाब पर लागू होता है: n=>(int)n==n&n>=0( 17 बाइट्स भी )
केविन क्रूज़सेन

4

Google शीट, 10 बाइट्स

बेनामी वर्कशीट फ़ंक्शन है जो सेल से इनपुट्स A1और कॉलिंग सेल को आउटपुट देता है।

=A1=Int(A1


3

लाइ , 35 47 बाइट्स

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

इसे ऑनलाइन आज़माएं!

Ly में फ्लोट सपोर्ट है, लेकिन वर्तमान में डिविजन प्रदर्शन करके फ्लोट बनाने का एकमात्र तरीका है। इनपुट के रूप में फ्लोट लेने का कोई तरीका नहीं है, इसलिए मुझे इसके बजाय मैन्युअल रूप से स्ट्रिंग की जांच करनी थी।

नकारात्मक संख्याओं के लिए समर्थन जोड़कर 13 बाइट्स खो दिए।


3

जावास्क्रिप्ट, 14

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

13 बाइट्स:n=>!(n-(n|0))
इस्माइल मिगुएल

@IsmaelMiguel। यह नकारात्मक संख्याओं के लिए काम नहीं करता है।

@ ThePirateBay कौन सी सटीक संख्या है? मैंने 5, 5.1, -5, -5.1, 0, 0.1 और -0.1 के साथ कोशिश की।
इस्माइल मिगुएल

@IsmaelMiguel। (n=>!(n-(n|0)))(-3)लौटता है true, लेकिन लौटना चाहिए false। आखिरी टेस्ट केस देखें।

ओह, तुम उस पर सही हो: / मैंने प्रश्न को गलत पढ़ा: /
इस्माइल मिगुएल




3

सी #, 40 37 29 बाइट्स

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

सहेजे गए 8 बाइट्स @Dennis_E की बदौलत!

पुराना उत्तर (37 बाइट्स)

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

पुराना पुराना उत्तर (40 बाइट्स):

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

2
30 बाइट्स: bool z(float x)=>x%1==0&&x>=0;और आप &29 बाइट्स के लिए सिंगल का उपयोग कर सकते हैं
डेनिस_ए

@Dennis_E धन्यवाद!
युम्मिपास्ता 15

x=>x%1==0&x>=0छोटा और संकलन हैFunc<float, bool>
TheLethalCoder

3

जावास्क्रिप्ट, 17 15 बाइट्स

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

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

मेरी गलतियों को पकड़ने के लिए edc65 का धन्यवाद।


3

अनएक्सपेंडेन्ड सिनक्लेयर ZX81, 20 बाइट्स

 1 INPUT A
 2 PRINT ABS A=INT A

20 बाइट्स क्योंकि BASIC टोकन है।

यदि नंबर पॉजिटिव है तो केवल 1 (ट्रू) आउटपुट करेगा और दर्ज की गई संख्या का मूल्य इसके पूर्णांक मूल्य के बराबर है। आउटपुट 0 या तो उन शर्तों को पूरा नहीं किया गया है।


1
क्या यह एक टोकन भाषा है? यदि यह आप है कि आपके उत्तर में इंगित करना चाहिए।
टेलर स्कॉट

1
क्षमा करें, हाँ, यह टोकन है, यानी, INPUT RAM का 1 बाइट है, जैसा कि PRINT और
समरूप है

1
विशेष रूप से, प्रत्येक पंक्ति संख्या 5 बाइट्स + 1 newline( \r\nZX81 स्पीक के बराबर) है, सफेद रिक्त स्थान बाइट्स के रूप में नहीं गिनते हैं क्योंकि वे पहले से ही कीवर्ड में शामिल हैं, क्योंकि सिनक्लेयर 'वन-की-प्रेस' एंट्री सिस्टम है। चलने पर, यह अधिक बाइट्स लेगा क्योंकि यह इसके मूल्य Aको कम करेगा var stack; मुझे लगता है कि प्रत्येक संख्यात्मक मान हमेशा 5 बाइट्स मेमोरी का होता है।
शॉन बेयबर्स

1
और ZX स्पेक्ट्रम भी
edc65

1
जहां तक ​​मुझे पता है कि टोकन मोड बिल्कुल वैसा ही है (स्पेक्ट्रम में अधिक कोड हैं)। और कोई भी शाब्दिक संख्या 6 बाइट्स है: एक 'न्यूमेरिक टैग' बाइट जिसके बाद 5 बाइट्स के मालिकाना फ़्लोटिंग पॉइंट फॉर्मेट में इनकोड किया गया है)
edc65

3

सी, सी ++: 38 37 बाइट्स

-1 बाइट Zacharý को धन्यवाद

सीटिंग के लिए -1 बाइट धन्यवाद

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

परीक्षण के लिए

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। (मुझे वास्तव में परवाह नहीं है लेकिन कुछ लोग करते हैं।)
एमडी एक्सएफ

यह return(int)n==n...काम करने के लिए बदल जाएगा ?
Zacharý

आप एक हस्ताक्षरित एक के बजाय अहस्ताक्षरित int का उपयोग करके एक बाइट दाढ़ी कर सकते हैं (जैसा कि आपको तब >=0परीक्षण की आवश्यकता नहीं है ): return(unsigned)n==n; और सी में, आप आगे के 4 बाइट्स के लिए वापसी प्रकार को छोड़ सकते हैं।
टोबी स्पाइट

आप 8 और बाइट्स बचा सकते हैं:w(float n){n=n==(int)n&&n>=0;}
जोहान डू टिट




2

प्रतीकात्मक अजगर , 21 बाइट्स

_=_%(_==_)==(_!=_)<=_

इसे ऑनलाइन आज़माएं!

एक जंजीर तुलना का उपयोग करता है:

  • _%(_==_) == (_!=_)अगर कोई दशमलव भाग नहीं है n%1 == 0, तो केवल तभी सत्य, चेक करता है n
  • (_!=_) <= _जाँचता है कि 0 <= n, यदि पूर्णांक गैर-ऋणात्मक है तो ही सही।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.