Каждый день я решаю несколько задач по программированию и головоломок из рейтингового режима Codr. Цель - достичь звания гения, попутно объясняю, как их решаю. Для начала вам не нужен опыт программирования, и вы узнаете массу нового и интересного по ходу дела.
Вот интересная задача, она довольно короткая, но обладает некоторыми интересными свойствами. Мы сталкивались с подобным кодом и раньше, много эпизодов назад, но на этот раз нам нужно полностью его проанализировать.
Он начинается с пустого объекта MP
и строки T
. Цикл for выполняет итерацию по каждому символу в T
, условие if проверяет, имеет ли этот символ ключевую запись в объекте MP
. Если это не так, он добавляет ключ с 0 в качестве значения. Затем он увеличивает значение этого ключа на единицу.
В конце R = MP[T[4]]
Эта последняя строка получает значение из MP
по ключу, который является 4-м индексом T
. Это полный рот.
Все, что делает этот код, он подсчитывает количество вхождений символов T
. Поскольку все символы в T
уникальны, все значения MP
будут равны 1. Внутренне MP
будет выглядеть следующим образом:
MP = {
'j': 1,
'p': 1,
'n': 1,
't': 1,
'm': 1,
'u': 1
}
Давайте внимательнее посмотрим на последнюю строку: R = MP[T[4]]
Сначала мы должны проанализировать ее с самого глубокого конца: T[4]
это получает символ с индексом 4 из T
, то есть _16 _. < br /> Теперь мы можем заменить: R = MP['m']
Мы уже знаем, что такое MP
значения, поэтому R
будет 1.
Решая эти задачи, вы становитесь лучшим программистом. Вы узнаете новые и лучшие способы анализа, отладки и улучшения кода. В результате вы станете более продуктивным и ценным в бизнесе. Присоединяйтесь ко мне на Пути к гениальности и улучшите свои навыки программирования на https://nevolin.be/codr/