Loading...
MariqnK1 avatar MariqnK1 52 Точки

Store Provision

https://judge.softuni.bg/Contests/Compete/Index/1322#2

Здравейте! Занимавам се с тая задача цяла сутрин и не мога да я вдяна. Пробвах с Object.assign да ги направя обекти масивите, не става. Доста начини пробвах и не стигнах до никъде. Може ли малко насоки, не е задължително да я решавате цялата задача. Благодаря. :)

Тагове:
0
JavaScript Fundamentals 10/06/2020 13:43:05
krasizorbov avatar krasizorbov 548 Точки
Best Answer

Здрасти ето примерно решение което разбира се не е единственния начин за решаване на задачата!

Първия масив е това което имаш налично!

Втория е това което си поръчал!

При първия цикъл променяш количествата в числа защото ги подават като стринг.

После минаваш през поръчките и гледаш дали ги има при вече наличните. Ако е така сумираш, ако не ги добавяш.

Пред последния цикъл пълни обектите, последния принтира.

function storeProvision(store = [], delivery = []) {
  let result = [];
  class Store {
    constructor(productName, quantity) {
      this.productName = productName;
      this.quantity = quantity;
    }
  }
  for (let i = 0; i < store.length; i++) {
    if (i % 2 !== 0) {
      store[i] = +store[i];
    }
  }
  for (let i = 0; i < delivery.length; i += 2) {
    if (store.includes(delivery[i])) {
      let index = store.indexOf(delivery[i]);
      store[index + 1] += +delivery[i + 1];
    } else {
      store.push(delivery[i]);
      store.push(delivery[i + 1]);
    }
  }

  for (let i = 0; i < store.length; i += 2) {
    p = new Store(store[i], store[i + 1]);
    result.push(p);
  }

  for (const key of result) {
    console.log(`${key.productName} -> ${key.quantity}`);
  }
}

1
10/06/2020 15:33:19
MariqnK1 avatar MariqnK1 52 Точки

Ще ги схвана обектите. Въпрос на време е.

 

Благодаря за обяснението и решението. yes

0
MapoBG avatar MapoBG 36 Точки

Здравейте,

Някой дали може да помогне с отговор, защо Judge дава грешка на тест 3(80/100) при използването на този код:

https://pastebin.com/cd5Z2Tnu

Явно доста съм зациклил, понеже от 1 час се чудя, защо при използване на закоментираният for of цикъл, вместо втория forEach ми дава 100/100. след като резултата и от двата цикъла реално е един и същ.....

Поздрави,

0
krasizorbov avatar krasizorbov 548 Точки

ето това е правилния начин за ползване на forEach(): така дава 100/100

function printStock(stock, orderedProducts) {
    let currentStock = {};
 
    stock.forEach((e, index) => {
        if (index % 2 == 0) {
            if (!currentStock[e]) {
                currentStock[e] = Number(stock[index + 1]);
            } else {
                currentStock[e] += Number(stock[index + 1]);
            }
        }
    });
 
    orderedProducts.forEach((el, index) => {
        if (index % 2 == 0) {
            if (!currentStock[el]) {
                currentStock[el] = Number(orderedProducts[index + 1]);
            } else {
                currentStock[el] += Number(orderedProducts[index + 1]);
            }
        }
    });
 
    Object.keys(currentStock)
        .forEach(product => console.log(`${product} -> ${currentStock[product]}`));
}

2
MapoBG avatar MapoBG 36 Точки

Благодаря!

Поздрави,

0
christoff avatar christoff 3 Точки

Малко по-кратко решение, със сигурност не е най-правилното, писал съм го миналата година :D

function store(stock, ordered) {
    let storeObj = {};
    let inStock = restock(stock, storeObj);
    let inOrder = restock(ordered, inStock);

    for (let product in inOrder) {
        console.log(`${product} -> ${inOrder[product]}`);
    }

    function restock(arr, obj) {
        while (arr.length !== 0) {
            let [product, qty] = [arr.shift(), arr.shift()];
            if (!obj.hasOwnProperty(product)) {
                obj[product] = Number(qty);
            } else {
                obj[product] += Number(qty);
            }
        }
        return obj;
    }
}
0
19/10/2020 22:18:26
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.