У нас есть склад, на котором лежат тканевые маски разных размеров.
type Store = Array<{
size: number
quantity: number
}>
На склад приходит заказ, который содержит id покупателей и один или два размера тканевой маски, которые ему подходят. Причем второй размер, если он есть, на единицу больше первого. Если покупателю подходят 2 размера, то он дополнительно указывает приоритетный размер (masterSize), который он хотел бы получить, s1, если приоритетным размером является первый и s2, если второй.
type Order = Array<
| {
id: number
size: [number]
}
| {
id: number
size: [number, number]
masterSize: "s1" | "s2"
}
>
Необходимо написать функцию process, которая первым аргументом принимает sore: Store, вторым - order: Order и возвращает:
type Result = {
stats: Array<{ size: number; quantity: number }>
assignment: Array<{ id: number; size: number }>
mismatches: number
}
где stats - отсортированный по возрастанию размеров массив, содержащий информацию о выданных размерах и их кол-ве; assignment - массив, содержащий сведения о том, кто какой размер получил mismatches - кол-во покупателей, у которых выданный размер НЕ совпал с приоритетным.
Ниже приведены кейсы для самопроверки. Учтите, что решение будет проверяться на большем числе тестов, далеко не каждое решение, которое проходит кейсы для самопроверки, верное.
[
{
"store": [{ "size": 2, "quantity": 1 }],
"order": [{ "id": 102, "size": [1, 2], "masterSize": "s1" }],
"isPossible": true,
"mismatches": 1
},
{
"store": [{ "size": 3, "quantity": 1 }],
"order": [{ "id": 102, "size": [1, 2], "masterSize": "s1" }],
"isPossible": false,
"mismatches": 0
},
{
"store": [{ "size": 2, "quantity": 4 }],
"order": [
{ "id": 101, "size": [2] },
{ "id": 102, "size": [1, 2], "masterSize": "s2" }
],
"isPossible": true,
"mismatches": 0
},
{
"store": [
{ "size": 1, "quantity": 1 },
{ "size": 2, "quantity": 2 },
{ "size": 3, "quantity": 1 }
],
"order": [
{ "id": 100, "size": [1] },
{ "id": 101, "size": [2] },
{ "id": 102, "size": [2, 3], "masterSize": "s1" },
{ "id": 103, "size": [1, 2], "masterSize": "s2" }
],
"isPossible": true,
"mismatches": 1
}
]
Код писать на JS