Сообщество Engee

Итоговое тестирование в скриптах

Автор
avatar-mikhailchupmikhailchup
Notebook

Резюме программы школы

  1. Введение в Julia. Каковы ее преимущества? Материалы занятия
  2. Синтаксис Julia и написание функций.
    Материалы занятия
  3. Индустриальные прикладные применения Julia.
    Материалы занятия
  4. Описание окружения робота.
    Материалы занятия
  5. Алгоритм системы управления роботом.
    Материалы занятия
  6. Итоговое тестирование в скриптах.

Видеозаписи занятий

Рекомендации к оформлению проекта

Отчетная часть проекта, включающая объяснения, комментарии и визуализацию должна быть в формате интерактивного скрипта Engee (.ngscript). Для лучшей организации проекта и файлов рекомендуется использовать такие инструменты, как, например, добавление внешнего кода, сохраненного в файлах *.jl, через директивы include.

In [ ]:
cd( @__DIR__ )
include( "room_functions.jl" );
include( "шагаем.jl" );
include( "get_path.jl" );
In [ ]:
gr()
Out[0]:
Plots.GRBackend()
In [ ]:
using Random
Random.seed!(3);
In [ ]:
function поворот( a::CartesianIndex, b::Number )
    vecA = [ a[1], a[2] ];
    rotM = [  cosd(b) sind(b)
             -sind(b) cosd(b) ]
    CartesianIndex( (Int.(round.(rotM * vecA )))...)
end;
In [ ]:
##################################
# Инициализация переменных
##################################

карта, старт_x, старт_y = gen_room_rend( 25, 20 )
старт = CartesianIndex( старт_x, старт_y )
положение = CartesianIndex( старт )
направление = CartesianIndex(1,0)

маршрут = []
путь = [ Tuple(старт) ];
изученная_карта = не_знаю .* ones( size(карта) ); # Теперь используем эту матрицу по назначению
изученная_карта[ старт ] = можно_ехать; # Робот определенно находится в точке, где нет стены
пройденная_карта = не_посещали .* ones( size(карта) );


a = Plots.Animation()
plt = plot();
i = 0

for i = 1:10000
    global plt
    положение, направление, маршрут, изученная_карта, пройденная_карта, конец_процедуры = шагаем( положение, направление, маршрут, изученная_карта, пройденная_карта, карта )
    
    if конец_процедуры == false push!(путь, Tuple(положение)); else break; end;
    
    plt = heatmap( ones(size(карта')), yflip=:true, aspect_ratio=:equal, leg=:false )
    spy!( plt, replace(изученная_карта' .== не_знаю, 0=>NaN), markersize=3, markercolor=:gray ) # c=:tab20, 
    heatmap!(plt, replace(изученная_карта', 1=>NaN) .- 2, yflip=:true, c=:greys, aspect_ratio=:equal, leg=:false );
    plot!( plt, first.(путь), last.(путь), aspect_ratio=:equal, lw=2, linez=range(0.0, stop=1.0, length=length(путь)), c=:batlow )
    if length(маршрут) > 0 scatter!( plt, [маршрут[1][1]], [маршрут[1][2]], markersize=5, markerstrokewidth=5, markercolor=:red, shape=:xcross ); end;
    
    # Отразим направление робота на графике треугольником
    if направление == CartesianIndex(1,0) scatter!( plt, [положение[1]], [положение[2]], markersize=7, shape=:rtriangle, c=:red );
    elseif направление == CartesianIndex(0,1) scatter!( plt, [положение[1]], [положение[2]], markersize=7, shape=:dtriangle, c=:red );
    elseif направление == CartesianIndex(-1,0) scatter!( plt, [положение[1]], [положение[2]], markersize=7, shape=:ltriangle, c=:red );
    else scatter!( plt, [положение[1]], [положение[2]], markersize=7, shape=:utriangle, c=:red ); end;
    
    frame(a, plt)
end


# И повторим последний кадр 50 раз
for i = 1:50
    frame(a, plt)
end


gif( a, "robot_animation.gif", fps=10 )
[ Info: Saved animation to /user/work/julia_final/robot_animation.gif
Out[0]:
No description has been provided for this image
In [ ]:
plot( heatmap( изученная_карта, title="изученная_карта"), heatmap( пройденная_карта, title="пройденная_карта" ), size=(1100,400))
Out[0]:

Для улучшения читаемости кода рекомендуется оставлять комментарии непосредственно в коде. Также рекомендуется использовать инструменты текстового редактора Engee. Например, заголовков и подзаголовков для подразделения контента на разделы.

Публикация проекта в сообществе

Проект нужно опубликовать в разделе "Летняя школа Julia" сообщества Engee.

Видеоинструкция также доступна в Телеграм канале школы, "Взаимодействие с сообществом Engee"

Конкурс школы Julia

Проект нужно выложить в сообществе Engee c указанием категории “Летняя школа Julia” до 6 сентября. А оценивать работы будет преподавательский состав Школы и в срок до 20 сентября (или быстрее) мы объявим победителей.

Авторы проектов, которые, по мнению преподавательской команды, справятся с этой задачей лучше всех, получат внешний аккумулятор в подарок.

Итоговое тестирование

Для получения сертификата о прохождении летней школы Julia необходимо успешно пройти итоговый тест. Тест будет содержать вопросы про пройденным материалам программы школы.

Информация о тесте будет публиковаться в Телеграм канале школы, "Получение сертификата о прохождении".

  • Для получения сертификата процент правильных ответов должен быть не менее 85%
  • В случае неудачи, тест можно повторить. Количество попыток не ограничено пока доступ к тестированию открыт.

После открытия доступа к тестированию, тест будет доступен в платформе Engee.

Engee Function

In [ ]:
# engee.script.edit("/user/start/examples/base_simulation/engee_function_basics/engee_function_basics.ngscript")