$ sudo teach IT

Разбор задач

Задача 1

Условие:
Три сигнала A, B, C ∈ {0,1}.
Доступ открывается, если выполняется: (A ИЛИ B) И НЕ(B И C).
Сколько наборов (A, B, C) открывают доступ?

Разбор решения:
Условие состоит из двух частей:

  1. (A ИЛИ B) — должен быть активен хотя бы один из A или B.
    Это сразу исключает случаи, когда A=0 и B=0 (неважно, какой C).

  2. НЕ(B И C) — запрещено, чтобы B=1 и C=1 одновременно.
    То есть если B=1, то C обязан быть 0. Если B=0 — ограничение не мешает.

Теперь просто считаем удобным способом — по B.

Случай 1: B = 0

Тогда запрет “B и C” вообще не срабатывает (потому что B=0, значит B∧C=0).
Остаётся требование: A ИЛИ 0 = A, то есть A должен быть 1.

  • A=1, B=0, C=0 — подходит

  • A=1, B=0, C=1 — подходит

Итого при B=0 получаем 2 набора.

Случай 2: B = 1

Тогда (A ИЛИ B) автоматически истинно (потому что B=1).
Но включается запрет: нельзя B=1 и C=1, значит C должен быть 0.

  • A=0, B=1, C=0 — подходит

  • A=1, B=1, C=0 — подходит

Итого при B=1 получаем 2 набора.

Проверка “в лоб”: всего 8 наборов. Запрещаются:

  • A=0,B=0,C=0 (потому что A∨B = 0)

  • A=0,B=0,C=1 (потому что A∨B = 0)

  • A=0,B=1,C=1 (потому что B∧C = 1, а это запрещено)

  • A=1,B=1,C=1 (то же самое)

Остаётся 4 разрешённых.

Ответ: 4.

Задача 2

Условие:
5 рабочих за 5 часов выкапывают 5 метров траншеи.
Сколько рабочих нужно, чтобы выкопать 100 метров за 100 часов?

Разбор решения:
Главная идея: работа зависит от “человеко-часов”.

5 рабочих × 5 часов = 25 человеко-часов дают 5 метров.

Значит 1 человеко-час даёт:

5 метров / 25 человеко-часов = 0,2 метра на человеко-час.

Теперь цель: 100 метров за 100 часов.
Если рабочих x, то человеко-часов будет:

x × 100.

И объём работы:

0,2 × (x × 100) = 100.

Считаем:

0,2 × 100 = 20, значит 20x = 100, отсюда x = 5.

Ответ: 5.

Задача 3

Условие:
Все стажёры проходят обучение. Анна — стажёр.
Следует ли, что Анна проходит обучение?

Разбор решения:
Это классическая логика “все → значит любой конкретный”.

Фраза “все стажёры проходят обучение” означает:
для любого человека, если он стажёр — он проходит обучение.

Анна стажёр, значит она попадает под это правило.
Следовательно, Анна проходит обучение.

Ответ: да.

Задача 4

Условие:
Все аналитики знают SQL. Некоторые разработчики — аналитики.
Следует ли, что некоторые разработчики знают SQL?

Разбор решения:
Разберём по цепочке:

  1. “Все аналитики знают SQL” — любой аналитик знает SQL.

  2. “Некоторые разработчики — аналитики” — существует хотя бы один человек, который одновременно разработчик и аналитик.

Берём этого “некоторого” разработчика-аналитика:
он аналитик ⇒ он знает SQL.

Значит существует хотя бы один разработчик, который знает SQL.
То есть “некоторые разработчики знают SQL” — верно.

Ответ: да.

Задача 5

Условие:
Некоторые менеджеры — программисты. Все программисты умеют писать код.
Следует ли, что некоторые менеджеры умеют писать код?

Разбор решения:
Тут почти то же самое, что в задаче 30:

  1. “Некоторые менеджеры — программисты” — есть хотя бы один человек, который и менеджер, и программист.
  2. “Все программисты умеют писать код” — любой программист умеет писать код.

Берём того самого менеджера-программиста:
он программист ⇒ он умеет писать код.

Значит существует хотя бы один менеджер, который умеет писать код.
То есть утверждение верное.

Ответ: да.

На следующий урок