1. Задача
Ты по телефону объясняешь человеку, как нарисовать простой дом: квадрат и треугольную крышу. Твой листок он не видит. Задавать вопросы нельзя. Что ты скажешь, то он и нарисует. Как сделать, чтобы не вышла каша?
В таком же положении находится любая программа. На том конце провода сидит компьютер.
2. Точное лучше очевидного
Человеку хватит слов «нарисуй дом». Компьютеру они ничего не говорят. Ему нужны мелкие шаги, по порядку:
- нарисуй квадрат со стороной 4 см
- сверху на квадрате нарисуй треугольник такой же ширины
- готово
Компьютер быстрый и никогда не устаёт. Но каждое слово он понимает буквально и сам не заполняет пропуски.
3. Порядок это часть смысла
«Сначала носки, потом ботинки» и «сначала ботинки, потом носки»: слова те же, а результат совсем разный. Шаги выполняются сверху вниз, по одному за раз. Поменяешь две строки местами, и результат может сильно измениться. Компьютер тебя не предупредит. Он просто выполнит строку 1, потом строку 2, потом строку 3.
4. Твоя очередь (без кода)
Вот дорога до дома друга. Один шаг слишком расплывчатый для того, кто всё понимает буквально. Какой это шаг и как бы ты его исправил?
- Дойди до конца улицы.
- Поверни к высокому зданию.
- Иди к третьей двери.
Ответ: шаг 2. Слова «к высокому зданию» предполагают, что человек это здание видит и знает, о каком из них речь. Точный шаг звучал бы так: «поверни налево». Всё, что ты пишешь для компьютера, должно проходить такую же проверку.
5. Главное
Компьютер выполняет точные шаги, по порядку и без догадок. Когда ты пишешь алгоритм, твоя задача одна: не оставить ему пропусков и шансов понять тебя неправильно. Расплывчатый шаг рано или поздно сломается. Цель: точно, пусть даже скучно.
На LeetCode
В этом уроке ещё нет кода, поэтому задачи с LeetCode к нему пока нет. Точные шаги в правильном порядке нужны любому решению, которое проходит тесты, а первые задачи ты решишь в уроках 6 и 7.
Ты читаешь как гость
Все бесплатные уроки открыты: читай и запускай. Бесплатный аккаунт отмечает пройденные уроки и показывает, где ты в курсе.