Каждый день я решаю несколько задач по программированию и головоломок из рейтингового режима 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/