সম্পাদনা: নতুন উত্তর সরবরাহ করা হয়েছে। আমি যখন এই প্রশ্নের প্রথম উত্তরটি লিখেছিলাম তখন আমি সি # ব্যবহার করেই শুরু করছিলাম, এবং এই মুহূর্তে আমি বুঝতে পারি যে আমার "সমাধান" নিষ্পাপ এবং অদক্ষ।
আমার আসল উত্তর: আমি আরও সহজ সংস্করণ সহ যাব:
if(Enumerable.Range(1,100).Contains(intInQuestion)) { ...DoStuff; }
একটি ভাল উপায়
যেহেতু আমি অন্য কোনও সমাধান দেখতে পেলাম না যা আরও কার্যকর (কমপক্ষে আমার পরীক্ষাগুলি অনুসারে), আমি এটিকে আরও একবার দেব।
নেতিবাচক ব্যাপ্তিগুলির সাথে কাজ করে এমন নতুন এবং আরও ভাল উপায় :
// Returns true if x is in range [min..max], else false
bool inRange(int x, int min=1, int max=100) => ((x - max)*(x - min) <= 0);
এটি ইতিবাচক এবং নেতিবাচক উভয় ব্যাপ্তি এবং বিভিন্ন সীমাতে ডিফল্ট ব্যবহার করা যেতে পারে
1..100 (সমেত) এবং ব্যবহারসমূহ x
নম্বর হিসাবে একটি ঐচ্ছিক পরিসর দ্বারা সংজ্ঞায়িত দ্বারা অনুসরণ চেক করতে min
এবং max
।
ভাল পরিমাপের জন্য উদাহরণ যুক্ত করা
উদাহরণ 1:
// Returns true if x is in range [min..max], else false
bool inRange(int x, int min=1, int max=100) => ((x - max)*(x - min) <= 0);
Console.WriteLine(inRange(25));
Console.WriteLine(inRange(1));
Console.WriteLine(inRange(100));
Console.WriteLine(inRange(25, 30, 150));
Console.WriteLine(inRange(-25, -50, 0));
রিটার্নস:
True
True
True
False
True
উদাহরণ 2: 1 এবং 150 এর মধ্যে এলোমেলো ইনটগুলির তালিকা ব্যবহার করে
// Returns true if x is in range [min..max], else false
bool inRange(int x, int min=1, int max=100) => ((x - max)*(x - min) <= 0);
// Generate 100000 ints between 1 and 150
var intsToCheck = new List<int>();
var randGen = new Random();
for(int i = 0; i < 100000; ++i){
intsToCheck.Add(randGen.Next(150) + 1);
}
var counter = 0;
foreach(int n in intsToCheck) {
if(inRange(n)) ++counter;
}
Console.WriteLine("{0} ints found in range 1..100", counter);
রিটার্নস:
66660 ints found in range 1..100
সম্পাদনের সময়: 0.016 সেকেন্ড