এখানে জাভাস্ক্রিপ্ট ব্যবহার করে আরও একটি সমাধান দেওয়া হয়েছে। আমার সমাধানের বৈশিষ্ট্যগুলি:
- অসীম হিসাবে নাল মানগুলি পরিচালনা করে
- ধরে নিন যে নিম্ন সীমাটি অন্তর্ভুক্ত এবং উপরের সীমাটি একচেটিয়া।
- একগুচ্ছ পরীক্ষা দিয়ে আসে
পরীক্ষাগুলি পূর্ণসংখ্যার উপর ভিত্তি করে তবে জাভাস্ক্রিপ্টে তারিখের বিষয়গুলি তুলনীয় হওয়ায় আপনি কেবল দুটি তারিখের বস্তুতেও ফেলে দিতে পারেন। অথবা আপনি মিলিসেকেন্ড টাইমস্ট্যাম্পে ফেলে দিতে পারেন।
কোড:
/**
* Compares to comparable objects to find out whether they overlap.
* It is assumed that the interval is in the format [from,to) (read: from is inclusive, to is exclusive).
* A null value is interpreted as infinity
*/
function intervalsOverlap(from1, to1, from2, to2) {
return (to2 === null || from1 < to2) && (to1 === null || to1 > from2);
}
পরীক্ষা:
describe('', function() {
function generateTest(firstRange, secondRange, expected) {
it(JSON.stringify(firstRange) + ' and ' + JSON.stringify(secondRange), function() {
expect(intervalsOverlap(firstRange[0], firstRange[1], secondRange[0], secondRange[1])).toBe(expected);
});
}
describe('no overlap (touching ends)', function() {
generateTest([10,20], [20,30], false);
generateTest([20,30], [10,20], false);
generateTest([10,20], [20,null], false);
generateTest([20,null], [10,20], false);
generateTest([null,20], [20,30], false);
generateTest([20,30], [null,20], false);
});
describe('do overlap (one end overlaps)', function() {
generateTest([10,20], [19,30], true);
generateTest([19,30], [10,20], true);
generateTest([10,20], [null,30], true);
generateTest([10,20], [19,null], true);
generateTest([null,30], [10,20], true);
generateTest([19,null], [10,20], true);
});
describe('do overlap (one range included in other range)', function() {
generateTest([10,40], [20,30], true);
generateTest([20,30], [10,40], true);
generateTest([10,40], [null,null], true);
generateTest([null,null], [10,40], true);
});
describe('do overlap (both ranges equal)', function() {
generateTest([10,20], [10,20], true);
generateTest([null,20], [null,20], true);
generateTest([10,null], [10,null], true);
generateTest([null,null], [null,null], true);
});
});
কর্মফল এবং জুঁই এবং ফ্যান্টমজেএস দিয়ে চালানোর সময় ফলাফল:
ফ্যান্টমজেএস ১.৯.৮ (লিনাক্স): ২০ টি সফলতার মধ্যে ২০ টি সাফল্য (0.003 সেকেন্ড / 0.004 সেকেন্ড)