Loading...
tafko2001 avatar tafko2001 2 Точки

Проблем със сортирането на 03. P!rates_Programming Fundamentals Final Exam

Здравейте задачата 03.Pirates съм я докарал  до края обаче във последната if проверка трябва да направя сортирането на злато в низходящ ред, а след това и имената на градовете във възходящ ред.Популацията на гродевете и златото съм ги добавил като масив във обекта, на индекс 0 ми е популацията,а на 1  е златото.

Това е моят код към задачата : https://pastebin.com/1r2AydUY

Задачата във Judge : https://judge.softuni.bg/Contests/Practice/Index/2302#2

Тагове:
0
JavaScript Fundamentals
Axiomatik avatar Axiomatik 2422 Точки

Ahoy !!!

Only some last sorting was required, definetely check out some additional reading on sorting to get the hang of it =>

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

https://stackoverflow.com/questions/44622560/multiple-sort-in-javascript

function pirates(input) {
    let obj = {}

    for (const element of input) {
        let [city, population, gold] = element.split(`||`);

        if (element == `Sail`) {
            let indexSail = input.indexOf(`Sail`)
            input.splice(0, indexSail + 1)
            break;
        }
        if (!obj.hasOwnProperty(city)) {
            obj[city] = []
            obj[city].push(Number(population))
            obj[city].push(Number(gold))

        } else {
            obj[city][0] += Number(population)
            obj[city][1] += Number(gold)
        }
    }

    for (const element of input) {
        if (element == `End`) {
            break
        }
        let [action, city, population, gold] = element.split(`=>`)

        if (!obj.hasOwnProperty(city)) {
            continue;
        }

        if (action == `Plunder`) {
            console.log(`${city} plundered! ${gold} gold stolen, ${population} citizens killed.`)
            obj[city][0] -= Number(population)
            obj[city][1] -= Number(gold)

            if (obj[city][0] == 0 || obj[city][1] == 0) {
                console.log(`${city} has been wiped off the map!`)
                delete obj[city]
            }

        } else if (action == `Prosper`) {
            gold = Number(population)
            if (gold >= 0) {
                obj[city][1] += Number(gold)
                console.log(`${gold} gold added to the city treasury. ${city} now has ${obj[city][1]} gold.`)
            } else if (gold < 0) {
                console.log(`Gold added cannot be a negative number!`)
            }
        }
    }

    let onlyCity = Object.keys(obj);

    const sortedTowns = Object.entries(obj)
        .sort((a, b) => b[1][1] - a[1][1] || a[0].localeCompare(b[0]));

    // More detailed Alternative
    // .sort(function (a, b) {
    //     if (b[1][1] !== a[1][1]) {
    //         return b[1][1] - a[1][1];
    //     } else {
    //         return a[0].localeCompare(b[0]);
    //     }
    // });


    if (onlyCity.length >= 1) {
        console.log(`Ahoy, Captain! There are ${onlyCity.length} wealthy settlements to go to:`)

        for (const [name, data] of sortedTowns) {
            console.log(`${name} -> Population: ${data[0]} citizens, Gold: ${data[1]} kg`);
        }
    } else {
        console.log(`Ahoy, Captain! All targets have been plundered and destroyed!`)
    }
}

pirates([`Tortuga||345000||1250`, `Santo Domingo||240000||630`, `Alberto||240000||810`, `PeshoTown||240000||810`, `Havana||410000||1100`, `Sail`, `Plunder=>Tortuga=>75000=>150`, `Prosper=>Santo Domingo=>180`, `End`])

 

0
tafko2001 avatar tafko2001 2 Точки

thank you very much for your help

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