Не уверен, является ли четкое слово правильным.
Вот сценарий, на котором можно объяснить, что я хотел бы получить.
Скажем, есть два Парикмахерских.
В Салоне A работают 2 сотрудника. В салоне B работает 1 сотрудник.
Скажем, я хочу рассчитать, сколько минут активности для салона за данный час.
Если салон А имеет следующие назначения волос:
И в салоне B есть следующие волосы:
В этом сценарии я хочу видеть:
Тогда я мог бы сказать, что если бы клиент E отправился в Salon A, они ждали около 6 минут для каждого человека, который был впереди них в очереди, чтобы получить стрижку, но если они отправятся в салон B, они будут ждать около 10 минут для каждого клиента перед ними. (Активность разделена на клиентов). Мне нужен способ рассчитать это, не полагаясь на количество сотрудников в салоне.
Один из способов, я могу думать, это иметь массив и заполнить его уникальными минутами. например, разогнать заказы и добавить каждую минуту в массив, последующие заказы будут просто писать поверх существующих минут, которые уже были заполнены, тогда у меня будет массив с 12 элементами (минут) для Салона A и массив из 20 предметов (минуты ) для Salon B. Я считаю, что это сработает, но хотелось бы знать, есть ли более эффективный или более практичный способ сделать это?
Я не против, какой язык просто хотел увидеть логику.
Простая попытка здесь, в JavaScript.
Скажите, 10 минут для каждого клиента, что постоянный. Так что для салона B это супер просто: там всего 1 парикмахер, время активности - 10 * количество клиентов.
Теперь для Салона A, скажем, app
- это массив, который хранит отправную точку для каждой встречи. Например:
var app = [0, 2, 10, 13, 20, 32]
Это означает, что есть 6 клиентов (возможно, это так: парикмахер A имеет 0-10, 10-20, 20-30, 32-42, парикмахер B имеет 2-12, 13-23, плохой парикмахер A).
И у нас есть временная timeline
. Пусть цикл через app
:
var timeline = [];
for(var i = 0; i < app.length; i++) {
for(var j = app[i]; j < app[i] + 10; j++) {
timeline[j] = 1;
}
}
Теперь, timeline
явно записанная каждую активную минуту, также содержит отверстия неактивных. 1
для активных, undefined
для неактивных.
Затем мы сокращаем timeline
, которая будет автоматически undefined
:
var activity = timeline.reduce(function(a, b) {
return a + b;
});
activity; // 40
Редактировать: это всего лишь одно решение, я уверен, что есть другие, которые могут работать лучше, чем этот :)