В первом домашнем задании вы познакомитесь с основными конструкциями языка JavaScript. Обязательно нужно выполнить basic задания.
- Подготовить репозиторий: инструкция подготовки репозитория
- Выкачать репозиторий на свой компьютер.
- Открыть index.html
- Проверить, что в консоли появилась запись "open"
- Все отправляемые и получаемые сообщения должны иметь поле
type. Возможные значения этого поля: hello- первое сообщение от сервера, содержит инструкции для дальнейшей работыhi- ответ клиента на первое сообщение сервера, содержит конфиги выполнения задания. Формат смотри в первом сообщении сервера.info- информационные сообщения от сервера. Формат:
{
"type": "info",
"message": "infoMessage"
}error- сообщения об ошибках. Формат:
{
"type": "error",
"message": "errorMessage"
}task- указываем серверу какое задание мы хотим проверить. Формат:
{
"type": "task",
"task": "taskName"
}ask- какое задание запрашивает сервер. Формат:
{
"type": "ask",
"taskName": "taskName",
"data": "taskData"
}askComplete- Если сервер передает для одного задания несколько сообщений, то данный тип придет после окончания всех сообщений. Формат:
{
"type": "askComplete"
}answer- ответ на задание отправляется с данным типом. Формат:
{
"type": "answer",
"data": "answerData"
}done- задание успешно выполнено. Формат:
{
"type": "done"
}- Сервер поддерживает два мода работы
testиcomplete. В первом случае вы можете сами выбрать какое задание выполнять. Во втором сервер прогоняет все задания автоматически.
echo(basic) - эхо, нужно вернуть, то что прислал серверreverse(basic) - нужно вернуть входящую строку в обратном порядке. Пример:asd->dsasum(basic) - сервер присылает несколько сообщений с числами, после всех сообщений нужно вернуть ответ. Пример:
Запрос ask 1
123Запрос ask 2
234Запрос askComplete
Ответ: 357
calc(basic) - простой калькулятор, нужно вернуть число. Операции:+,*. Только положительные числа. Пример:2 + 2 * 2->6median(basic) - нужно вернуть на каждом шаге верхнюю медиану переданных значений. Медиана википедия Пример: первое число3->3, второе число1([3, 1]) ->3, третье число4([3, 1, 4]) ->3, четвертое число6([3, 1, 4, 6]) ->4...groups(basic) - нужно разложить входящие данные в массивы по группам. Группы должны быть отсортированы по их номерам, значения внутри групп в поредяке их прихода. Пример:
Запрос ask 1
{
"group": 1,
"value": "ue646g8pvi"
}Запрос ask 2
{
"group": 0,
"value": "oa2ouyds4i"
}Запрос ask 3
{
"group": 0,
"value": "zv2osthuxr"
}Запрос ask 4
{
"group": 1,
"value": "czcpjk0529"
}Запрос askComplete
Ответ:
[
[
"oa2ouyds4i",
"zv2osthuxr"
],
[
"ue646g8pvi",
"czcpjk0529"
]
]recurrence(advanced) - Нужно проверять было ли текущее сообщение среди предыдущих. На вход могут быть вложенные массивы и объекты. Порядок элементов массива не важен. Пример:
Запрос 1:
{
"oa2ouyds4i": 123
}Ответ 1: false - т.к. только один запрос
Запрос 2:
{
"adjqkklqhyx2l9ycr5zz63l3di" : -57,
"jwbj1qufbekjejd1hl2bro1or": [123, 432]
}Ответ 2: false - т.к. первый и второй запрос отличаются
Запрос 3:
{
"oa2ouyds4i": 123
}Ответ 3: true - т.к. совпадает с первым запросом
-
validator(advanced) - По заданной схеме валидации нужно проверить входные данные.Типы валидации:
isNumber- значение является числомisString- значение является строкойisBoolean- значение является булевым типомisJSON- значение является валидная json строкаmoreN- больше числа NlessN- меньше числа NisPrime- является простым числомlongerN- длиннее N символовshorterN- короче N символовcontainSTR- содержит подстроку STRtruly- буленовское истиное значение (true)falsy- буленовское ложное значение (false)
Сначала приходит схема:
["isNumber", "more10"]
Потом приходят данные:
["adf", [1,20,300], 123, 1, '{"as":1}']
Последнее - пример валидной JSON строки
Ответ:
[false, false, true, false, false]
-
recurrence2(wtf) - дополнительное задание которое не входит, ни в базовую, ни в продвинутую часть, но будет круто, если кто-то сможет объяснить, почему обычный алгоритмrecurrenceне работает на данных этого задания. Условие задачи полностью совпадает с задачейrecurrence
При технической неисправности сервера пишите в обсуждение в ВК