এটি কি পুরো সংখ্যা?


26

সংখ্যাটি সম্পূর্ণ হয় যদি এটি কোনও দশমিক অংশ ছাড়াই অ-নেতিবাচক পূর্ণসংখ্যা হয়। সুতরাং 0এবং 8এবং 233494.0পুরো তৈরী করছেন, 1.1এবং 0.001এবং 233494.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
পছন্দ করেছেন (আসলে, এটি বেশিরভাগের চেয়ে শক্ত))
এমডি এক্সএফ

আমরা কি ভগ্নাংশের প্রতিনিধিত্ব করে দুটি সংখ্যা হিসাবে ইনপুট নিতে পারি?
LyricLy

@ লাইরিলাই না, এটি কিছু ভাষার পক্ষে আরও সহজ হবে বা অন্যের জন্য অপ্রয়োজনীয়।
এমডি এক্সএফ

মনে রাখবেন যে পুরো সংখ্যাগুলি অ-নেতিবাচক পূর্ণসংখ্যা। এটি প্রতিফলিত করতে দয়া করে আপনার প্রথম বাক্যটি আপডেট করুন। এবং আপনি কীভাবে পুরো সংখ্যাটি নেতিবাচক নয় এবং নেতিবাচক সংখ্যার জন্য মিথ্যা আউটপুটগুলি বৈধ আছে তা দেখাতে চাইলে আপনি নেতিবাচক সংখ্যা পরীক্ষার ক্ষেত্রে যুক্ত করতে পারেন।
থমাস ওয়ার্ড

1
@ থমাস ওয়ার্ড, উইকিপিডিয়া নিবন্ধটি আপনার সাথে পুরোপুরি একমত নয় বলে মনে হচ্ছে: "যেসব পাঠাগুলি প্রাকৃতিক সংখ্যা থেকে শূন্য বাদ দেয় কখনও কখনও প্রাকৃতিক সংখ্যাগুলিকে শূন্যের সাথে পুরো সংখ্যা হিসাবে উল্লেখ করে তবে অন্যান্য লেখায় এই শব্দটি পূর্ণসংখ্যার পরিবর্তে ব্যবহৃত হয় (negativeণাত্মক পূর্ণসংখ্যা সহ) "। পূর্ণসংখ্যা সম্পর্কে জিজ্ঞাসা করে আমি শিরোনামটি পড়েছি।
ilkkachu

উত্তর:


13

এপিএল (ডায়ালগ) , 3 বাইট

⌊≡|

এটি অনলাইন চেষ্টা করুন!

নোট করুন যে f←প্রযুক্তিগত সীমাবদ্ধতার কারণে টিআইও লিঙ্কে চাপ দেওয়া হয়েছে তবে এটি সাধারণত প্রয়োজন হয় না।


এটি মার্জিত! আমি জানি না কেন আমি আমার উত্তরে অপ্রয়োজনীয় সিলিং যুক্ত করেছি ....
গ্যালেন ইভানভ

4
@GalenIvanov এই মাত্র হল floor(n) == abs(n)
এরিক দি আউটগল্ফার


11

ওল্ফ্রাম ভাষা (গণিত) , 17 15 14 বাইট

1 টি বাইট সংরক্ষণ করা হয়নি একটি গাছের জন্য ধন্যবাদ!

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

এটি অনলাইন চেষ্টা করুন!

প্রথম গণিতের উত্তর \ o /

গণিত, 15 বাইট

@ ব্যবহারকারী 202729 এর জন্য 2 বাইট সংরক্ষণ করা হয়েছে!

#==⌊Abs@#⌋&


6

কাস্তে , 3 বাইট

£ΘN

এটি অনলাইন চেষ্টা করুন! তৃতীয় পরীক্ষার কেস টিআইওতে শেষ হয়েছে, তাই আমি কয়েক অঙ্ক ছাড়িয়েছি। আমি এটি স্থানীয়ভাবে চালানোর চেষ্টা করেছি, তবে কয়েক মিনিট পরে এটি হত্যা করেছি যেহেতু এটি 6 গিগাবাইটেরও বেশি মেমরি ব্যবহার করছে এবং আমার কম্পিউটারটি তোলপাড় শুরু করেছে। এটি তাত্ত্বিকভাবে কোনও পর্যায়ে শেষ করা উচিত ...

ব্যাখ্যা

এটি চ্যালেঞ্জের বর্ণনার সাথে মিলিয়ে যায় সরাসরি।

£Θ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
আর ইনপুট ধরে
চ এটিকে একটি ফ্লোটে রূপান্তরিত করে
d এবং আমি এটির সদৃশ করে একে পূর্ণসংখ্যায় রূপান্তর করি
It এর পরম মানটি ঠেলে দেয় (খ / সি নেতিবাচক হতে পারে না)
= তারা সমান কিনা তা পরীক্ষা করে
p ফলাফল মুদ্রণ করে

এটি অনলাইন চেষ্টা করুন!



4

কিউবিআইসি , 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 প্রদান করে both



4

সি (জিসিসি), 27 28 27 25 বাইট

-2 প্রিন্সপোলকার ধন্যবাদ

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

এটি অনলাইন চেষ্টা করুন!

একটি ম্যাক্রো "ফাংশন" সংজ্ঞায়িত করে gযা কোনও পরামিতি নেয় f(যে কোনও ধরণের)। তারপরে কাস্টিং f mod 1শূন্য কিনা, এবং যদি fএটি নেতিবাচক হয় তা পরীক্ষা করে দেখুন।


আমি মনে করি includeআপনার বাইট গণনাতে আপনাকে নির্দেশের আকার অন্তর্ভুক্ত করতে হবে , যেহেতু fmod এ সংজ্ঞায়িত হয়েছে math.h: সেখানে দেখুন
হাটসুপয়েন্টারকুন

@ হাটসুপয়েন্টারকুন এটি ছাড়া এটিও
মিঃ এক্সকোডার

2
আমি মনে করি না যে আপনার উইন্ডোজ ভিত্তিক সি বিতরণে (
কনর ও'ব্রায়ান

25, # ডিফাইন জি (চ)! Fmod (f, f> = 0)
প্রিন্সপোলকা

4

সি #, জাভা: 43 বাইট

-1 বাইট জ্যাচারে
-1 বাইট ধন্যবাদ থেললিটকোডারকে ধন্যবাদ

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

সি # এর একটি বিশেষ 33 বাইট অপটিমাইজেশন রয়েছে যা আপনি জাভাতে পারবেন না:

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

পরীক্ষার জন্য

সি # কোড:

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এবং এর মধ্যে একটি স্থান সরাতে পারেন (
জাকারি

ফিরে boolআসুন এবং ত্রেনীর কোনও প্রয়োজন নেই।
TheLethalCoder

@ দ্য লেথলকোডার boolজাভাতে উপস্থিত নেই
হাটসুপয়েন্টারকুন

আমি জাভা / সি # তেমন জানি না, তবে আপনি কি এটি তৈরি করতে পারেন return(int)n==n? অথবা যে ন্যায়বিচারের n==nচেয়ে কোন int এ cast ালবে n?
জাকারি

1
আপনি জাভা 7 উত্তরটি 3 টি বাইট দ্বারা কমিয়ে চেকটি উল্টিয়ে এবং বুলিয়ান অপারেটরটিকে কিছুটা বিটওয়াইসে পরিবর্তন করতে পারেন: int w(float n){return(int)n!=n|n<0?0:1;}( 40 বাইট ) জাভা 8 লাম্বদা হিসাবে এটি আরও খাটো: n->(int)n==n&n>=0( 17 বাইট ) , এবং এটি লম্বদা হিসাবে সি # উত্তরটিতে প্রযোজ্য: n=>(int)n==n&n>=0(এছাড়াও 17 বাইট )
কেভিন ক্রুইজসেন

4

গুগল শিটস, 10 বাইট

বেনামে ওয়ার্কশিট ফাংশন যা সেল থেকে A1আউটপুট কল করে এবং কলিং সেলটিতে আউটপুট দেয়।

=A1=Int(A1


3

লাই , 35 47 বাইট

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

এটি অনলাইন চেষ্টা করুন!

লাইতে ফ্লোট সমর্থন রয়েছে তবে বর্তমানে ভাসা তৈরির একমাত্র উপায় বিভাগ সম্পাদন করা। ইনপুট হিসাবে ভাসা নেওয়ার কোনও উপায় নেই, সুতরাং এর পরিবর্তে আমাকে নিজেই স্ট্রিংটি পরীক্ষা করতে হয়েছিল।

নেতিবাচক সংখ্যাগুলির জন্য সমর্থন যুক্ত 13 বাইট হারিয়েছে।


3

জাভাস্ক্রিপ্ট, 14

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

13 বাইট:n=>!(n-(n|0))
ইসমাইল মিগুয়েল

@IsmaelMiguel। এটি নেতিবাচক সংখ্যার জন্য কাজ করে না।

@ দি পাইরেটবে কোন সঠিক সংখ্যা? আমি 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 টি বাইট সংরক্ষণ করা!

পুরানো উত্তর (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 বাইটের জন্য একটি একক ব্যবহার করতে পারেন
ডেনিস_ই

@ ডেনিস_ই ধন্যবাদ!
yummypasta

x=>x%1==0&x>=0সংক্ষিপ্ত এবং সংকলনFunc<float, bool>
TheLethalCoder

3

জাভাস্ক্রিপ্ট, 17 15 বাইট

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

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

আমার ভুল ধরার জন্য edc65 ধন্যবাদ।


3

অব্যবহৃত সিনক্লেয়ার জেডএক্স 81, 20 বাইট

 1 INPUT A
 2 PRINT ABS A=INT A

20 বাইট কারণ বেসিক টোকানাইজড।

সংখ্যাটি ইতিবাচক হলে কেবল আউটপুট 1 (সত্য) হয় এবং সংখ্যার মানটির পূর্ণসংখ্যার মান সমান হয়। ফলাফলগুলি 0 এর মধ্যে শর্তটি পূরণ হয় না।


1
এটি কি টোকেনযুক্ত ভাষা? যদি এটি হয় তবে আপনার উত্তরটিতে এটি নির্দেশ করা উচিত।
টেলর স্কট

1
দুঃখিত, হ্যাঁ এটি টোকানাইজড, অর্থাত্, INPUT র‌্যামের 1 বাইট, যেমন PRINT এবং এমনকি = =
সিনক্লায়ার

1
বিশেষত, প্রতিটি লাইন নম্বর 5 বাইট +1 newline( \r\nজেডএক্স 8১ স্পিকারের সমতুল্য), সাদা স্পেসগুলি বাইট হিসাবে গণনা করা হয় না কারণ এটি ইতিমধ্যে সিনক্লেয়ারের 'এক-কী-প্রেস' এন্ট্রি সিস্টেমের কারণে মূলশব্দগুলিতে অন্তর্ভুক্ত রয়েছে। দৌড়ানোর সময়, এটি আরও বাইটস লাগবে কারণ এটি এর Aউপরে মূল্য রাখবে var stack; আমি মনে করি প্রতিটি সংখ্যার মান সর্বদা মেমরির 5 বাইট হয়।
শান বেবারস

1
এবং জেডএক্স স্পেকট্রামও
edc65

1
আমি যতদূর জানি টোকনাইজেশন মোড হুবহু একই (স্পেকট্রামে আরও কোড রয়েছে)। এবং যে কোনও আক্ষরিক সংখ্যাটি 6 বাইট: একটি 'সংখ্যা ট্যাগ' বাইটের পরে 5 বাইটের মালিকানাধীন ভাসমান পয়েন্ট ফর্ম্যাটে এনকোড করা মান)
edc65

3

সি, সি ++: 38 37 বাইট

-1 বাইট জ্যাকারিকে ধন্যবাদ ý

-1 বাইট সিলিংক্যাট ধন্যবাদ

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

পরীক্ষার জন্য

সি: অনলাইনে চেষ্টা করে দেখুন

সি কোড:

#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;
}

সি ++ কোড:

#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...কাজ করতে চান ?
জাকারি

আপনি স্বাক্ষরিত পরিবর্তে স্বাক্ষরিত ইন্ট ব্যবহার করে একটি বাইট শেভ করতে পারেন (যেমন আপনার পরে >=0পরীক্ষার দরকার নেই ): return(unsigned)n==n; এবং সি-তে আপনি আরও 4 বাইটের জন্য রিটার্নের ধরণটি বাদ দিতে পারেন।
টবি স্পিড

আপনি আরও 8 টি বাইট সংরক্ষণ করতে পারেন:w(float n){n=n==(int)n&&n>=0;}
জোহান ডু টোইট




2

প্রতীক পাইথন , 21 বাইট

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

এটি অনলাইন চেষ্টা করুন!

একটি শৃঙ্খলিত তুলনা ব্যবহার করে:

  • _%(_==_) == (_!=_)দশমিক অংশ না n%1 == 0থাকলে কেবল সত্য যদি পরীক্ষা করে n
  • (_!=_) <= _0 <= nপূর্ণসংখ্যা অ-নেতিবাচক হলে কেবল সত্য যদি তা পরীক্ষা করে থাকে ।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.