В первом домашнем задании вы познакомитесь с основными конструкциями языка 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
->dsa
sum
(basic) - сервер присылает несколько сообщений с числами, после всех сообщений нужно вернуть ответ. Пример:
Запрос ask
1
123
Запрос ask
2
234
Запрос askComplete
Ответ: 357
calc
(basic) - простой калькулятор, нужно вернуть число. Операции:+
,*
. Только положительные числа. Пример:2 + 2 * 2
->6
median
(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
При технической неисправности сервера пишите в обсуждение в ВК