Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

Icakiss avatar Icakiss 0 Точки

03. Plant Discovery Final Exam

Условието на задачата пише ясно : Note: If any of the command is invalid, print "error"

Загубих един час, докато не ми казаха да погледна слидо.

И пак я докарах само до 60/100.

function solve(arr) {
    let n = arr.shift()
    let obj = {}
    let countRatings = {}
    for (let i = 1; i <= n; i++) {
        let line = arr.shift().split('<->')
        let [plant, rare] = [...line]
        rare = Number(rare)
        if (obj.hasOwnProperty(plant)) {
            obj[plant][0] += rare
        } else {

            obj[plant] = [rare]
        }
    }
    line = arr.shift()
    while (line != "Exhibition") {
        line = line.split(': ')
        let [comm, plantThings] = [...line]
        plantThings = plantThings.split(' - ')
        
     if(obj.hasOwnProperty(plantThings[0])){   

        if (comm === 'Rate') {
            let [plant, rate] = [...plantThings]
            rate = Number(rate)
            if (obj[plant][1] == undefined) {
                obj[plant].push(rate)

            } else {
                obj[plant][1] += rate
            }


            if (countRatings.hasOwnProperty(plant)) {

                countRatings[plant] += 1
            } else {
                countRatings[plant] = 1
            }
        } else if (comm === 'Update') {
            let [plant, rare] = [...plantThings]
            rare = Number(rare)
            obj[plant][0] = rare
        } else if (comm === 'Reset') {
            let [plant] = [...plantThings]
            countRatings[plant] = 0
            obj[plant][1] = 0
        }
    } else {
        console.log('error');
    }
        line = arr.shift()
    }
    let array = Object.entries(obj)
    for (let line of array) {
        let i = array.indexOf(line)
        let name = line[0]
        let count = +countRatings[name]
        if (count != 0) {
            array[i][1][1] = +array[i][1][1] / count
        }
    }
 
    array = array.sort((a, b) => b[1][0] - a[1][0] || b[1][1] - a[1][1])

    console.log(`Plants for the exhibition:`)
    for (const line of array) {
        let name = line[0]
        console.log(`- ${name}; Rarity: ${line[1][0]}; Rating: ${(line[1][1]).toFixed(2)}`)


    }
}

 

Тагове:
0
JavaScript Fundamentals
ZOROBOY avatar ZOROBOY 6 Точки

Колега Tzigoriyn, според мен си прав за събирането на разстенията, но има и още нещо. Мисля, че големия капан е в проверката за валидна команда.

Колега Icakiss - Според мен двумерния масив има своите плюсове, но аз лично се стремя да избягвам привеждането на всичко към масиви (комфортна зона) и да използвам предимно обекти, защото JS е обектно ориентиран език и както казват в JS всичко е обект :)  . Аз лично използвах обект с пропертита, които дават яснота кое какво е  и не се гадае кое [0][1]... [1][0]... какво е и кода е по четим и лесен за проследяване.

Като човек изкарал 37 на тази задача и 220 общ резултат на финалния изпит не се наемам да давам съвети - изказвам лично мнение, защото за мен моя резултат си е провал. Все пак ще пусна и моя код, ако на някой му е интересно да разгледа - може пък да дам някоя идея на някой  :) ....

https://pastebin.com/3NtUyJAG

''' да програмираш е забавно, предизвикателно и интересно.... bring them all.... :)

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.