Skip to content

hse2016/part-1-task-1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 

Repository files navigation

Первое домашнее задание

В первом домашнем задании вы познакомитесь с основными конструкциями языка JavaScript. Обязательно нужно выполнить basic задания.

Прежде чем выполнять домашнее задание:

  1. Подготовить репозиторий: инструкция подготовки репозитория
  2. Выкачать репозиторий на свой компьютер.
  3. Открыть index.html
  4. Проверить, что в консоли появилась запись "open"

Интерфейс общения с сервером

  1. Все отправляемые и получаемые сообщения должны иметь поле type. Возможные значения этого поля:
  2. hello - первое сообщение от сервера, содержит инструкции для дальнейшей работы
  3. hi - ответ клиента на первое сообщение сервера, содержит конфиги выполнения задания. Формат смотри в первом сообщении сервера.
  4. info - информационные сообщения от сервера. Формат:
{
  "type": "info",
  "message": "infoMessage"
}
  1. error - сообщения об ошибках. Формат:
{
   "type": "error",
   "message": "errorMessage"
}
  1. task - указываем серверу какое задание мы хотим проверить. Формат:
{
   "type": "task",
   "task": "taskName"
}
  1. ask - какое задание запрашивает сервер. Формат:
{
   "type": "ask",
   "taskName": "taskName",
   "data": "taskData"
}
  1. askComplete - Если сервер передает для одного задания несколько сообщений, то данный тип придет после окончания всех сообщений. Формат:
{
   "type": "askComplete"
}
  1. answer - ответ на задание отправляется с данным типом. Формат:
{
   "type": "answer",
   "data": "answerData"
}
  1. done - задание успешно выполнено. Формат:
{
   "type": "done"
}
  1. Сервер поддерживает два мода работы test и complete. В первом случае вы можете сами выбрать какое задание выполнять. Во втором сервер прогоняет все задания автоматически.

Типы заданий

  1. echo (basic) - эхо, нужно вернуть, то что прислал сервер
  2. reverse (basic) - нужно вернуть входящую строку в обратном порядке. Пример: asd -> dsa
  3. sum (basic) - сервер присылает несколько сообщений с числами, после всех сообщений нужно вернуть ответ. Пример:

Запрос ask 1

  123

Запрос ask 2

  234

Запрос askComplete

Ответ: 357

  1. calc (basic) - простой калькулятор, нужно вернуть число. Операции: +, *. Только положительные числа. Пример: 2 + 2 * 2 -> 6
  2. median (basic) - нужно вернуть на каждом шаге верхнюю медиану переданных значений. Медиана википедия Пример: первое число 3 -> 3, второе число 1 ([3, 1]) -> 3, третье число 4 ([3, 1, 4]) -> 3, четвертое число 6 ([3, 1, 4, 6]) -> 4 ...
  3. 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"
  ]
]
  1. recurrence (advanced) - Нужно проверять было ли текущее сообщение среди предыдущих. На вход могут быть вложенные массивы и объекты. Порядок элементов массива не важен. Пример:

Запрос 1:

{
  "oa2ouyds4i": 123
}

Ответ 1: false - т.к. только один запрос

Запрос 2:

{
  "adjqkklqhyx2l9ycr5zz63l3di" : -57,
  "jwbj1qufbekjejd1hl2bro1or": [123, 432]
}

Ответ 2: false - т.к. первый и второй запрос отличаются

Запрос 3:

{
  "oa2ouyds4i": 123
}

Ответ 3: true - т.к. совпадает с первым запросом

  1. validator (advanced) - По заданной схеме валидации нужно проверить входные данные.

    Типы валидации:

    • isNumber - значение является числом
    • isString - значение является строкой
    • isBoolean - значение является булевым типом
    • isJSON - значение является валидная json строка
    • moreN - больше числа N
    • lessN - меньше числа N
    • isPrime - является простым числом
    • longerN - длиннее N символов
    • shorterN - короче N символов
    • containSTR - содержит подстроку STR
    • truly - буленовское истиное значение (true)
    • falsy - буленовское ложное значение (false)

    Сначала приходит схема:

    ["isNumber", "more10"]

    Потом приходят данные:

    ["adf", [1,20,300], 123, 1, '{"as":1}']

    Последнее - пример валидной JSON строки

    Ответ:

    [false, false, true, false, false]
  2. recurrence2 (wtf) - дополнительное задание которое не входит, ни в базовую, ни в продвинутую часть, но будет круто, если кто-то сможет объяснить, почему обычный алгоритм recurrence не работает на данных этого задания. Условие задачи полностью совпадает с задачей recurrence

Если возникли проблемы

При технической неисправности сервера пишите в обсуждение в ВК

About

Первое домашнее задание

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published