Определите перекрытие с помощью 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
На сегодня все. Надеюсь, это руководство было полезным для вас.
возникли проблемы с этим руководством?
Я не против, если вы сообщите мне…😊😊