Информация об изменениях

Сообщение Re[7]: Задачи-индикаторы мышления от 07.04.2024 10:00

Изменено 07.04.2024 10:17 rg45

Re[7]: Задачи-индикаторы мышления
Здравствуйте, Shmj, Вы писали:

S>

S>Для проверки пересечения двух числовых интервалов на C#, вы можете использовать следующее логическое выражение:

S>

S>bool DoIntervalsIntersect(int aStart, int aEnd, int bStart, int bEnd)
S>{
S>    return aStart <= bEnd && bStart <= aEnd;
S>}
S>


S>Это выражение возвращает true, если интервалы пересекаются, и false в противном случае. Оно проверяет, что начало одного интервала находится до конца другого, и наоборот. Это базовая проверка, которая работает для замкнутых интервалов, где aStart и aEnd определяют начало и конец первого интервала, а bStart и bEnd — для второго.


S>Мыслит?


А давай попробуем подсунуть ей денормализованное логическое выражение? Ну вот, например, следующее выражение эквивалентно предыдущему:

bool DoIntervalsIntersect(int aStart, int aEnd, int bStart, int bEnd)
{
    return
    bStart <= aStart && aStart <= bEnd ||
    bStart <= aEnd && aEnd <= bEnd ||
    aStart <= bStart && bStart <= aEnd ||
    aStart <= bEnd && bEnd <= aEnd;
}


Интересно, сможет упростить? Только, наверное, лучше бы как-то переименовать функцию и параметры. Можно попробовать скормить ей выражение в чистом виде, без функции, а имена параметров заменить на a, b, c, d.
Re[7]: Задачи-индикаторы мышления
Здравствуйте, Shmj, Вы писали:

S>

S>Для проверки пересечения двух числовых интервалов на C#, вы можете использовать следующее логическое выражение:

S>

S>bool DoIntervalsIntersect(int aStart, int aEnd, int bStart, int bEnd)
S>{
S>    return aStart <= bEnd && bStart <= aEnd;
S>}
S>


S>Это выражение возвращает true, если интервалы пересекаются, и false в противном случае. Оно проверяет, что начало одного интервала находится до конца другого, и наоборот. Это базовая проверка, которая работает для замкнутых интервалов, где aStart и aEnd определяют начало и конец первого интервала, а bStart и bEnd — для второго.


S>Мыслит?


А давай попробуем подсунуть ей денормализованное логическое выражение? Ну вот, например, следующее выражение эквивалентно предыдущему:

bool DoIntervalsIntersect(int aStart, int aEnd, int bStart, int bEnd)
{
    return
    bStart <= aStart && aStart <= bEnd ||
    bStart <= aEnd && aEnd <= bEnd ||
    aStart <= bStart && bStart <= aEnd ||
    aStart <= bEnd && bEnd <= aEnd;
}


Интересно, сможет упростить? Только, наверное, лучше бы как-то переименовать функцию и параметры. Можно попробовать скормить ей выражение в чистом виде, без функции, а имена параметров заменить на a, b, c, d:

    c <= a && a <= d ||
    c <= b && b <= d ||
    a <= c && c <= b ||
    a <= d && d <= b