Найти в Дзене
Практика Python

Решение олимпиадной задачи по информатике. На какой машине скрылись преступники?

Задача уровня школьной олимпиады:

Три свидетеля дали показания, что преступники скрылись с места преступления:
Первый: на черном “Бьюике”
Второй: на синем “Форде”
Третий: не на черном “Крайслере”
Каждый из них в чем-то одном ошибался. На какой машине скрылись преступники?

Такая задача встречается очень часто пусть и в разных интерпретациях. Преступники могут скрываться на Жигулях, Волге, Москвиче, Тойоте, Рено, Мазде - да чего я только не видел. С цветами у составителей задач похуже, но тоже разброс имеется. Логика задачи от этого не меняется, а за неё как правило дают 10 баллов - именно дают, потому что это халява.

Самое главное здесь правильно - удобочитаемо назвать переменные - и всё пойдет само собой. Я всегда стараюсь называть переменный 4-мя буквами, так чтобы по их названию был понятен смысл, но не больше, чтоб не получалось 10-ти этажных конструкций. 4 буквы как правило, более чем достаточно.

Названия машин:

buik - бьюик
ford -
форд
krai -
крайслер

blak - черный
blue -синий
notb - не черный

Показания свидетелей:

Первый: (blak + buik)

Второй: (blue + ford)

Третий: (notb + krai)

Получаем следующую конструкцию:

(blak + buik) * (blue + ford) * (notb + krai)

Перемножаем содержимое в первой скобки на содержимое второй:

(blak*blue + blak*ford + buik*blue + buik*ford) * (notb + krai)

Теперь выбрасываем то, что противоречит смыслу:

blak*blue - чёрный*синий

buik*ford - бьик*форд

у нас остаётся:

(blak*ford + buik*blue) * (notb + krai)

точно также раскрываем скобки и получаем:

blak*ford*notb + blak*ford*krai + buik*blue*notb + buik*blue*krai

Также выбрасываем бессмысленные выражения:

blak*ford*notb - Чёрный*Форд*Нечёрный

blak*ford*krai - Чёрный*Форд*Крайслер

buik*blue*krai - Бьик*Синий*Крайслер

остаётся единственное выражение обладающее смыслом:

buik*blue*notb - Синий*Бьюик*Нечёрный

Ответ: Преступники уехали на синем бьюике.

Можно и на русском называть переменные)). Но теперь, если попадётся подобная задача, то знайте что отчёт набранных баллов у вас начнётся с 10, а не с 0.

А интепретатору отступы не нравятся)))
А интепретатору отступы не нравятся)))

Продолжение следует....

Подборка по решению задач