💡 Инструкция: Выберите один ответ из пяти. На работу отведено 55 минут. После завершения откроются правильные ответы, объяснения и результаты по темам.
Вопрос 1 из 20
Какой механизм Julia определяет поведение строки `@show f.(x, y)`?
Y_{ij}=f(X_i,Z_j)
Julia Julia · Точечная запись Копировать
f(x, y) = x^2 + y
x = [1, 2, 3]
y = reshape([10, 20], 1, 2)
@show f.(x, y)
Точечная запись меняет только синтаксис цикла, но не правила согласования размерностей и не может создавать расширение singleton-осей.
Точка у вызова и оператора включает broadcasting: `f.(x)` и `x.+ y` применяют операцию по согласованным размерностям без ручного цикла.
Цепочка точечных вызовов выполняется единым циклом, если внешне каждый оператор помечен точкой; обычный вызов внутри на слияние не влияет.
В broadcasting вектор получает ориентацию строки или столбца из соседней матрицы, поэтому дополнительное изменение формы не требуется.
Пользовательский тип может задавать `broadcastable`, стиль и материализацию, но контракт должен сохранять форму, оси и смысл скалярности.
Вопрос 2 из 20
Какую проверку стоит добавить для участка с `@show f.(x, y)`?
Julia Julia · Точечная запись Копировать
f(x, y) = x^2 + y
x = [1, 2, 3]
y = reshape([10, 20], 1, 2)
@show f.(x, y)
Проверить на отдельном примере, что точка у вызова и оператора включает broadcasting: `f.(x)` и `x.+ y` применяют операцию по согласованным размерностям без ручного цикла.
Проверить на отдельном примере, что точечная запись меняет только синтаксис цикла, но не правила согласования размерностей и не может создавать расширение singleton-осей.
Проверить на отдельном примере, что в broadcasting вектор получает ориентацию строки или столбца из соседней матрицы, поэтому дополнительное изменение формы не требуется.
Проверить на отдельном примере, что цепочка точечных вызовов выполняется единым циклом, если внешне каждый оператор помечен точкой; обычный вызов внутри на слияние не влияет.
Проверить на отдельном примере, что пользовательский тип может задавать `broadcastable`, стиль и материализацию, но контракт должен сохранять форму, оси и смысл скалярности.
Вопрос 3 из 20
Что должно остаться истинным после рефакторинга участка с `@show f.(x, y)`?
Julia Julia · Точечная запись Копировать
f(x, y) = x^2 + y
x = [1, 2, 3]
y = reshape([10, 20], 1, 2)
@show f.(x, y)
Сохранить в реализации правило: Точка у вызова и оператора включает broadcasting: `f.(x)` и `x.+ y` применяют операцию по согласованным размерностям без ручного цикла.
Сохранить в реализации правило: Цепочка точечных вызовов выполняется единым циклом, если внешне каждый оператор помечен точкой; обычный вызов внутри на слияние не влияет.
Сохранить в реализации правило: Пользовательский тип может задавать `broadcastable`, стиль и материализацию, но контракт должен сохранять форму, оси и смысл скалярности.
Сохранить в реализации правило: В broadcasting вектор получает ориентацию строки или столбца из соседней матрицы, поэтому дополнительное изменение формы не требуется.
Сохранить в реализации правило: Точечная запись меняет только синтаксис цикла, но не правила согласования размерностей и не может создавать расширение singleton-осей.
Вопрос 4 из 20
После обновления Julia или пакета поведение участка с `@show f.(x, y)` изменилось. Какой критерий приёмки остаётся корректным?
Y_{ij}=f(X_i,Z_j)
Приёмка должна подтвердить, что цепочка точечных вызовов выполняется единым циклом, если внешне каждый оператор помечен точкой; обычный вызов внутри на слияние не влияет.
Приёмка должна подтвердить, что пользовательский тип может задавать `broadcastable`, стиль и материализацию, но контракт должен сохранять форму, оси и смысл скалярности.
Приёмка должна подтвердить, что в broadcasting вектор получает ориентацию строки или столбца из соседней матрицы, поэтому дополнительное изменение формы не требуется.
Приёмка должна подтвердить, что точечная запись меняет только синтаксис цикла, но не правила согласования размерностей и не может создавать расширение singleton-осей.
Приёмка должна подтвердить, что точка у вызова и оператора включает broadcasting: `f.(x)` и `x.+ y` применяют операцию по согласованным размерностям без ручного цикла.
Вопрос 7 из 20
Какую проверку стоит добавить для участка с `y .= @. sin(x)^2 + cos(x)^2`?
Julia Julia · Слияние точечных операций Копировать
x = rand(1000)
y = similar(x)
y .= @. sin(x)^2 + cos(x)^2
@show maximum(abs.(y .- 1))
Проверить на отдельном примере, что пользовательский тип может задавать `broadcastable`, стиль и материализацию, но контракт должен сохранять форму, оси и смысл скалярности.
Проверить на отдельном примере, что цепочка точечных вызовов выполняется единым циклом, если внешне каждый оператор помечен точкой; обычный вызов внутри на слияние не влияет.
Проверить на отдельном примере, что broadcast сопоставляет размерности по правилам расширения singleton-осей; несовместимые оси не исправляются автоматическим транспонированием.
Проверить на отдельном примере, что цепочка точечных операций обычно сливается в один broadcast-цикл, однако присваивание без точки или явный материализующий вызов может разорвать fusion.
Проверить на отдельном примере, что точка у вызова и оператора включает broadcasting: `f.(x)` и `x.+ y` применяют операцию по согласованным размерностям без ручного цикла.
Вопрос 9 из 20
Как проверить, что новая реализация `y .= @. sin(x)^2 + cos(x)^2` не изменила обещанное пользователю поведение?
y_i=g(h(x_i))
Приёмка должна подтвердить, что цепочка точечных операций обычно сливается в один broadcast-цикл, однако присваивание без точки или явный материализующий вызов может разорвать fusion.
Приёмка должна подтвердить, что broadcast сопоставляет размерности по правилам расширения singleton-осей; несовместимые оси не исправляются автоматическим транспонированием.
Приёмка должна подтвердить, что точка у вызова и оператора включает broadcasting: `f.(x)` и `x.+ y` применяют операцию по согласованным размерностям без ручного цикла.
Приёмка должна подтвердить, что пользовательский тип может задавать `broadcastable`, стиль и материализацию, но контракт должен сохранять форму, оси и смысл скалярности.
Приёмка должна подтвердить, что цепочка точечных вызовов выполняется единым циклом, если внешне каждый оператор помечен точкой; обычный вызов внутри на слияние не влияет.
Вопрос 11 из 20
Какой механизм Julia определяет поведение строки `A = reshape(1:6, 3, 2)`?
(m,1)\oplus(1,n)\to(m,n)
Julia Julia · Размерности Копировать
A = reshape(1:6, 3, 2)
b = [10, 20, 30]
c = reshape([100, 200], 1, 2)
@show A .+ b A .+ c
Broadcast сопоставляет размерности по правилам расширения singleton-осей; несовместимые оси не исправляются автоматическим транспонированием.
Цепочка точечных вызовов выполняется единым циклом, если внешне каждый оператор помечен точкой; обычный вызов внутри на слияние не влияет.
Точка у вызова и оператора включает broadcasting: `f.(x)` и `x.+ y` применяют операцию по согласованным размерностям без ручного цикла.
Пользовательский тип может задавать `broadcastable`, стиль и материализацию, но контракт должен сохранять форму, оси и смысл скалярности.
В broadcasting вектор получает ориентацию строки или столбца из соседней матрицы, поэтому дополнительное изменение формы не требуется.
Вопрос 12 из 20
Какую проверку стоит добавить для участка с `A = reshape(1:6, 3, 2)`?
Julia Julia · Размерности Копировать
A = reshape(1:6, 3, 2)
b = [10, 20, 30]
c = reshape([100, 200], 1, 2)
@show A .+ b A .+ c
Проверить на отдельном примере, что цепочка точечных вызовов выполняется единым циклом, если внешне каждый оператор помечен точкой; обычный вызов внутри на слияние не влияет.
Проверить на отдельном примере, что broadcast сопоставляет размерности по правилам расширения singleton-осей; несовместимые оси не исправляются автоматическим транспонированием.
Проверить на отдельном примере, что пользовательский тип может задавать `broadcastable`, стиль и материализацию, но контракт должен сохранять форму, оси и смысл скалярности.
Проверить на отдельном примере, что в broadcasting вектор получает ориентацию строки или столбца из соседней матрицы, поэтому дополнительное изменение формы не требуется.
Проверить на отдельном примере, что точка у вызова и оператора включает broadcasting: `f.(x)` и `x.+ y` применяют операцию по согласованным размерностям без ручного цикла.
Вопрос 13 из 20
Что должно остаться истинным после рефакторинга участка с `A = reshape(1:6, 3, 2)`?
Julia Julia · Размерности Копировать
A = reshape(1:6, 3, 2)
b = [10, 20, 30]
c = reshape([100, 200], 1, 2)
@show A .+ b A .+ c
Сохранить в реализации правило: Точка у вызова и оператора включает broadcasting: `f.(x)` и `x.+ y` применяют операцию по согласованным размерностям без ручного цикла.
Сохранить в реализации правило: Broadcast сопоставляет размерности по правилам расширения singleton-осей; несовместимые оси не исправляются автоматическим транспонированием.
Сохранить в реализации правило: Цепочка точечных вызовов выполняется единым циклом, если внешне каждый оператор помечен точкой; обычный вызов внутри на слияние не влияет.
Сохранить в реализации правило: В broadcasting вектор получает ориентацию строки или столбца из соседней матрицы, поэтому дополнительное изменение формы не требуется.
Сохранить в реализации правило: Пользовательский тип может задавать `broadcastable`, стиль и материализацию, но контракт должен сохранять форму, оси и смысл скалярности.
Вопрос 14 из 20
Какой результат приёмочного теста подтвердит корректность участка с `A = reshape(1:6, 3, 2)`?
(m,1)\oplus(1,n)\to(m,n)
Приёмка должна подтвердить, что точка у вызова и оператора включает broadcasting: `f.(x)` и `x.+ y` применяют операцию по согласованным размерностям без ручного цикла.
Приёмка должна подтвердить, что в broadcasting вектор получает ориентацию строки или столбца из соседней матрицы, поэтому дополнительное изменение формы не требуется.
Приёмка должна подтвердить, что broadcast сопоставляет размерности по правилам расширения singleton-осей; несовместимые оси не исправляются автоматическим транспонированием.
Приёмка должна подтвердить, что цепочка точечных вызовов выполняется единым циклом, если внешне каждый оператор помечен точкой; обычный вызов внутри на слияние не влияет.
Приёмка должна подтвердить, что пользовательский тип может задавать `broadcastable`, стиль и материализацию, но контракт должен сохранять форму, оси и смысл скалярности.
Вопрос 16 из 20
Какое объяснение для `Base.broadcastable(b::Batch) = Ref(b)` выдержит проверку на другом допустимом входе?
\operatorname{axes}(\operatorname{broadcast}(f,x))=\mathcal{A}
Julia Julia · Пользовательский broadcast Копировать
struct Batch{T}
rows::Vector{T}
end
Base.broadcastable(b::Batch) = Ref(b)
combine(b::Batch, x) = length(b.rows) + x
@show combine.(Batch([1, 2, 3]), 10:12)
В broadcasting вектор получает ориентацию строки или столбца из соседней матрицы, поэтому дополнительное изменение формы не требуется.
Цепочка точечных вызовов выполняется единым циклом, если внешне каждый оператор помечен точкой; обычный вызов внутри на слияние не влияет.
Точка у вызова и оператора включает broadcasting: `f.(x)` и `x.+ y` применяют операцию по согласованным размерностям без ручного цикла.
Пользовательский тип может задавать `broadcastable`, стиль и материализацию, но контракт должен сохранять форму, оси и смысл скалярности.
Определение `broadcastable` добавляет пользовательскому типу обычный метод и не влияет на оси или материализацию результата.
Вопрос 17 из 20
Какую проверку стоит добавить для участка с `Base.broadcastable(b::Batch) = Ref(b)`?
Julia Julia · Пользовательский broadcast Копировать
struct Batch{T}
rows::Vector{T}
end
Base.broadcastable(b::Batch) = Ref(b)
combine(b::Batch, x) = length(b.rows) + x
@show combine.(Batch([1, 2, 3]), 10:12)
Проверить на отдельном примере, что в broadcasting вектор получает ориентацию строки или столбца из соседней матрицы, поэтому дополнительное изменение формы не требуется.
Проверить на отдельном примере, что точка у вызова и оператора включает broadcasting: `f.(x)` и `x.+ y` применяют операцию по согласованным размерностям без ручного цикла.
Проверить на отдельном примере, что цепочка точечных вызовов выполняется единым циклом, если внешне каждый оператор помечен точкой; обычный вызов внутри на слияние не влияет.
Проверить на отдельном примере, что определение `broadcastable` добавляет пользовательскому типу обычный метод и не влияет на оси или материализацию результата.
Проверить на отдельном примере, что пользовательский тип может задавать `broadcastable`, стиль и материализацию, но контракт должен сохранять форму, оси и смысл скалярности.
Вопрос 19 из 20
После обновления Julia или пакета поведение участка с `Base.broadcastable(b::Batch) = Ref(b)` изменилось. Какой критерий приёмки остаётся корректным?
\operatorname{axes}(\operatorname{broadcast}(f,x))=\mathcal{A}
Приёмка должна подтвердить, что пользовательский тип может задавать `broadcastable`, стиль и материализацию, но контракт должен сохранять форму, оси и смысл скалярности.
Приёмка должна подтвердить, что точка у вызова и оператора включает broadcasting: `f.(x)` и `x.+ y` применяют операцию по согласованным размерностям без ручного цикла.
Приёмка должна подтвердить, что в broadcasting вектор получает ориентацию строки или столбца из соседней матрицы, поэтому дополнительное изменение формы не требуется.
Приёмка должна подтвердить, что цепочка точечных вызовов выполняется единым циклом, если внешне каждый оператор помечен точкой; обычный вызов внутри на слияние не влияет.
Приёмка должна подтвердить, что определение `broadcastable` добавляет пользовательскому типу обычный метод и не влияет на оси или материализацию результата.