Каждый день я решаю несколько задач по программированию и головоломок из рейтингового режима Codr. Цель - достичь звания гения, попутно объясняю, как их решаю. Для начала вам не нужен опыт программирования, и вы узнаете массу нового и интересного по ходу дела.
Мы уже встречали подобный код в ранге «новичок», но на этот раз задача требует от нас его решить. К счастью для нас, это не так сложно.
Задача начинается с двух массивов a1 and a2
, каждый из которых содержит по пять случайных чисел, и пустого массива arr
. Ниже приводится цикл while, который выполняется до тех пор, пока оба a1 and a2
не пусты. Если вы анализируете тело цикла, он удаляет числа с помощью pop
(с конца массива) и сравнивает эти числа. В зависимости от условия x and y
эти числа добавляются к arr
. Ниже приведен псевдокод, который поможет нам проанализировать код:
a1.pop -> x=4 a2.pop -> y=6 push -> arr=[6, 4]
a1.pop -> x=4 a2.pop -> y=9 push -> arr=[..., 9, 4]
a1.pop -> x=3 a2.pop -> y=4 push -> arr=[..., 4, 3]
a1.pop -> x=0 a2.pop -> y=9 push -> arr=[..., 9, 0]
a1.pop -> x=7 a2.pop -> y=3 push -> arr=[..., 7, 3]
arr = [6, 4, 9, 4, 4, 3, 9, 0, 7, 3]
Теперь, когда мы знаем окончательное значение arr
, задача просит нас решить R = arr[4]
, которое является значением в arr
по 4-му индексу, в данном случае это 4
.
Важное примечание: мы проанализировали весь приведенный выше код, но имейте в виду, что нам следовало остановиться, как только мы нашли значение arr
в индексе 4, потому что это единственное, что здесь имеет значение.
Присоединяйтесь ко мне на Пути к гениальности и улучшите свои навыки программирования на https://nevolin.be/codr/