Определите перекрытие с помощью javascript, Python и C

✨Перекрывающееся определение:

Перекрытие относится к особому случаю в системе уравнений, в котором две линии на самом деле лежат непосредственно друг над другом.
Помните, вы изучали диаграммы Венна на уроках математики? Вы знаете, что два круга нарисованы внахлест, поэтому у них есть пространство посередине.

Следовательно, мы можем сказать, что если у нас есть две части чего-то, и одна покрывает часть другой, то они перекрываются.
Теперь давайте решим задачу на эту тему. , с которым я столкнулся в техническом интервью:

Проблема:

Вам будет предоставлен массив с числами 5. Первые 2 числа представляют диапазон, а следующие два числа представляют другой диапазон.
Последнее число в массиве — X.
Цель нашей программы — определить, перекрываются ли оба диапазона хотя бы на X числа.
Например, в массиве [5, 12, 3, 8, 3] диапазоны от 5 до 12 равны [ 5, 6, 7, 8, 9, 10, 11, 12 ].

а диапазон от 3 до 8 равен [ 3, 4, 5, 6, 7, 8 ].

и он перекрывается числами 4, поэтому наша программа должна возвращать true.
Подождите, почему?
Потому что последнее число в примере массива X = 3.
Хотя мы обнаружили, что наши диапазоны перекрываются на 4numbers (5, 6, 7, 8) , а последнее число в данный массив X < 4. поэтому наша программа должна возвращать true .
Давайте решим проблему…

🔥Метод 1: решить эту проблему с помощью цикла

function OverlappingRanges(arr) {
let counter = 0; 
for (var i = arr[0]; i < arr[1]; i++) {

if (i >= arr[2] && i <= arr[3]) {
counter ++;
   }
}
return (counter >= arr[4]) ? true : false;
   };
const result = OverlappingRanges([5, 12, 3, 8, 3]);
console.log(result) 
//output: true

Пояснение:

step 1: In the counter variable, we keep a track of how many numbers overlap
step 2:loop through one of the ranges

step 3: check if a number within the first range exists in the second range
step 4: check if the numbers that overlap is equal to or greater
 than the last number in the array (which we have define as x)
That's it!

🔥Способ 2: Решим задачу без использования цикла:

Предположим, задан массив [8, 20, 6, 15, 6]. наша функция также должна возвращать true. см. изображение ниже:

function overlapping(arr){
let range1 = listOfNumbers(arr[0], arr[1]);
let range2 = listOfNumbers(arr[2], arr[3]);
let overlappingCount = 0;
if(range1[0] >= range2[0] && range1[0] <= range2[1]){
  overlappingCount=  range2[1] - range1[0] + 1;
} else {
   overlappingCount =  range1[1] - range2[0] + 1;
}
if(overlappingCount >= arr[4]){
   return true;
}
}
function listOfNumbers(a, b){
  let start = a;
  let end = b;
  if(a > b){
    start = b;
    end = a;
 }
   return [a, b];
  };
const arr = [4, 10, 2, 6, 3];
console.log(overlapping(arr)) //output: true

🔥Пример кода Python:

def overlapping(arr):
    count = 0
    for i in range(arr[0], arr[1]+1):
        for j in range(arr[2], arr[3]+1):
            if i == j:
                count += 1
    if count >= arr[4]:
        return True
    else:
        return False
res = overlapping([8, 20, 6, 15, 6])
print(res)
#output: true

🔥Пример кода C:

#include <stdio.h>
int overlapping(int arr[]){
int count = 0;
  for (int i = arr[0]; i <= arr[1]; i++){
    for (int j = arr[2]; j <= arr[3]; j++){
       if (i == j){
         count += 1;
         }
       }
     }
 if (count >= arr[4]){
    return 1;
    }
 else {
    return 0;
     
  }
};
//run this programm, and see the output

На сегодня все. Надеюсь, это руководство было полезным для вас.
возникли проблемы с этим руководством?
Я не против, если вы сообщите мне…😊😊