💡 Инструкция: Выберите один ответ из пяти. На работу отведено 55 минут. После завершения откроются правильные ответы, объяснения и результаты по темам.
Вопрос 2 из 20
Какой тест точнее всего зафиксирует границу поведения `missing`?
Julia Julia · Ветвления Копировать
function label(x)
if x == 0
return :zero
elseif x > 0
return :positive
else
return :negative
end
end
@show label(-3)
Проверить на отдельном примере, что включение массива материализует результат, допускает несколько генераторов и фильтр, а его форма определяется порядком генераторов и разделителями.
Проверить на отдельном примере, что цикл по `1:length(A)` эквивалентен `eachindex(A)` для почти каждого пользовательского массива и почти каждого смещения индексов.
Проверить на отдельном примере, что генератор вычисляет элементы лениво и особенно полезен для агрегирования без промежуточного массива; повторный обход снова выполняет выражение.
Проверить на отдельном примере, что условие `if` в Julia должно иметь тип `Bool`: числа и коллекции не получают неявной истинности, поэтому проверку нужно формулировать явно.
Проверить на отдельном примере, что Julia интерпретирует ноль, пустую строку и пустой массив как ложные условия, поэтому явное сравнение в `if` избыточно.
Вопрос 4 из 20
Как проверить, что новая реализация `if x == 0` не изменила обещанное пользователю поведение?
c\in\{\mathrm{true},\mathrm{false}\}
Приёмка должна подтвердить, что условие `if` в Julia должно иметь тип `Bool`: числа и коллекции не получают неявной истинности, поэтому проверку нужно формулировать явно.
Приёмка должна подтвердить, что цикл по `1:length(A)` эквивалентен `eachindex(A)` для почти каждого пользовательского массива и почти каждого смещения индексов.
Приёмка должна подтвердить, что генератор вычисляет элементы лениво и особенно полезен для агрегирования без промежуточного массива; повторный обход снова выполняет выражение.
Приёмка должна подтвердить, что Julia интерпретирует ноль, пустую строку и пустой массив как ложные условия, поэтому явное сравнение в `if` избыточно.
Приёмка должна подтвердить, что включение массива материализует результат, допускает несколько генераторов и фильтр, а его форма определяется порядком генераторов и разделителями.
Вопрос 7 из 20
Какую проверку стоит добавить для участка с `for i in eachindex(A)`?
Julia Julia · Циклы Копировать
function edge_sum(A)
s = zero(eltype(A))
for i in eachindex(A)
isodd(i) && (s += A[i])
end
return s
end
@show edge_sum([2, 4, 6, 8, 10])
Проверить на отдельном примере, что условие `if` в Julia должно иметь тип `Bool`: числа и коллекции не получают неявной истинности, поэтому проверку нужно формулировать явно.
Проверить на отдельном примере, что цикл по `1:length(A)` эквивалентен `eachindex(A)` для почти каждого пользовательского массива и почти каждого смещения индексов.
Проверить на отдельном примере, что генератор вычисляет элементы лениво и особенно полезен для агрегирования без промежуточного массива; повторный обход снова выполняет выражение.
Проверить на отдельном примере, что включение массива материализует результат, допускает несколько генераторов и фильтр, а его форма определяется порядком генераторов и разделителями.
Проверить на отдельном примере, что диапазоны и `eachindex` помогают обходить допустимые индексы без предположения о начале или форме массива; изменение коллекции во время обхода требует отдельного решения.
Вопрос 14 из 20
Как проверить, что новая реализация `A = [i + 10j for i in 1:3 for j in 0:2 if i + j < 5]` не изменила обещанное пользователю поведение?
B_{ij}=g(i,j)\;\text{при}\;p(i,j)
Приёмка должна подтвердить, что включение вычисляет элементы лениво и не выделяет массив, пока результат не передан в `collect`.
Приёмка должна подтвердить, что цикл по `1:length(A)` эквивалентен `eachindex(A)` для почти каждого пользовательского массива и почти каждого смещения индексов.
Приёмка должна подтвердить, что условие `if` в Julia должно иметь тип `Bool`: числа и коллекции не получают неявной истинности, поэтому проверку нужно формулировать явно.
Приёмка должна подтвердить, что включение массива материализует результат, допускает несколько генераторов и фильтр, а его форма определяется порядком генераторов и разделителями.
Приёмка должна подтвердить, что генератор вычисляет элементы лениво и особенно полезен для агрегирования без промежуточного массива; повторный обход снова выполняет выражение.
Вопрос 17 из 20
Какую проверку стоит добавить для участка с `g = (x^2 for x in 1:10 if isodd(x))`?
Julia Julia · Генераторы Копировать
g = (x^2 for x in 1:10 if isodd(x))
first_pass = sum(Iterators.take(g, 3))
second_pass = sum(Iterators.take(g, 3))
@show first_pass second_pass
Проверить на отдельном примере, что генератор сохраняет вычисленные элементы после первого обхода, поэтому повторное агрегирование не выполняет выражение снова.
Проверить на отдельном примере, что условие `if` в Julia должно иметь тип `Bool`: числа и коллекции не получают неявной истинности, поэтому проверку нужно формулировать явно.
Проверить на отдельном примере, что включение массива материализует результат, допускает несколько генераторов и фильтр, а его форма определяется порядком генераторов и разделителями.
Проверить на отдельном примере, что генератор вычисляет элементы лениво и особенно полезен для агрегирования без промежуточного массива; повторный обход снова выполняет выражение.
Проверить на отдельном примере, что цикл по `1:length(A)` эквивалентен `eachindex(A)` для почти каждого пользовательского массива и почти каждого смещения индексов.