Megafon Game
Игра для кодеров, тестеров, аналитиков и девопсов, выходящая за границы виртуального.
Размести свое послание на билборде в центре Нижнего Новгорода.
Пройди три задания. За каждое задание в конце первых трех глав можно получить от 0 до 100%.
Набери не менее 80%. Как среднее значение трех рейтинговых заданий.
Задания и ответы на них
Список ответов будет пополняться!
Возможные условия:
- Герой -
Багмэн
- Специализация -
Разработчик
- Язык -
JavaScript
- Опыт владения -
1-3 года
- Хотите работать в МегаФоне? -
Нет :)
Задание №1
Разгадай шифр пятнистого!
Шифр у него не самый сложный, поэтому думаю ты легко справишься, удачи!
Напиши функцию которая принимает положительное число и возвращает значение «Password is X», где X — переданное число, дополненное нулями до 5 цифр.
Пример:
stringformat(321) == "Password is 00321"
Ответы:
Codepen
Пример кода
const text = (n) => `Password is ${n}`;
const stringFormat = (n) => {
if (String(n).length >= 5) return text(n);
return text(`0000${n}`.slice(-5));
};
Задание №2
Пятнистый череп снова наломал дров. Помоги Мегафонмену, придумай решение задачи.
Дано целое число n. Необходимо вычислить последнюю цифру n-го числа последовательности, заданной следующим соотношением:
- F0 = 0
- F1 = 1
- Fn = F(n-1) + F(n−2) при n >= 2
Ответы:
Codepen
Пример кода
const lastDigit = (n) => {
let a = 1;
let b = 1;
let c;
let i = 2;
while (i < n) {
c = (a + b) % 10;
a = b;
b = c;
i = i + 1;
}
return b;
};
Задание №3
Вы почти починили лифт, но сбилась система расписания лифта с другими лифтами здания, системой обслуживания и тд. Вы не можете просто так это оставить, иначе потом пострадают люди, если лифт запустится не в свое время, например, когда все думают, что идет тех. обслуживание.
Поэтому ваша задача написать функцию checkAvailability
которая принимает 2 аргумента:
schedule
- расписание занятости в формате "hh:mm-hh:mm" 24-h. Расписание в виде массива строк, состоящих из времени начала и конца временного отрезка, разделенных "-" (Например, ["09:30-10:15"]
).
currentTime - строка с определенным временем в формате hh:mm 24-h, для которой функция будет проверять доступность на основе расписания.
Если во время currentTime не запланировано никаких работ с лифтом(есть свободный временной слот), функция должна возвращать строку "available". Если в currentTime уже занято, функция должна возвращать строку с временем, когда будет доступно.
Если время, переданное в качестве входных данных, равно времени окончания, функция также должна возвращать значение "available".
Примеры:
checkAvailability(["09:30-10:15", "12:20-15:50"], "11:00") --> "available"
checkAvailability(["09:30-10:15", "12:20-15:50"], "10:00") --> "10:15"
Ответы:
Codepen
Пример кода
const splitRange = (range) => range.split('-');
const isInRange = (value, range) => {
return value >= range[0] && value <= range[1] ? range[1] : 'available';
};
const checkAvailability = (schedule, currentTime) => {
const isEqual = splitRange(schedule[0])[1] === splitRange(schedule[1])[0];
if (isEqual) return splitRange(schedule[1])[1];
const result = schedule.map((range) => isInRange(currentTime, splitRange(range)));
const isAvailable = result.every(value => value === 'available');
const time = result.filter(value => value !== 'available')[0];
return isAvailable ? 'available' : time;
};
ToDo
Обязательные для прохождения сюжета:
- Добавить решение для 1 главы
- Добавить решение для 2 главы
- Добавить решение для 3 главы
Обязательные для устройства в Megafon:
- Добавить решение для 4 главы
License
Данные ответы к заданиям и говнокод являются интеллектуальной собственностью Sergey Mirasov и опубликованы с ознакомительной целью. Всем добра.