Loading...

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

amydarling avatar amydarling 13 Точки

Treasure Hunt javaScript

Здравейте, може ли някой да ми каже къде греша ,тъй като от дни не мога да си видя грешката на следната задача : 

Create a program that manages the state of the treasure chest along the way. On the first line you will receive the initial loot of the treasure chest, which is a string of items separated by a '|'.

"{loot1}|{loot2}|{loot3}… {lootn}"

The following lines represent commands until "Yohoho!" which ends the treasure hunt:

  • Loot {item1} {item2}…{itemn} – pick up treasure loot along the way. Insert the items at the beginning of the chest. If an item is already contained don't insert it.
  • Drop {index} – remove the loot at the given position and add it at the end of the treasure chest. If the index is invalid skip the command.
  • Steal {count} – someone steals the last count loot items. If there are less items than the given count remove as much as there are. Print the stolen items separated by ', ':
  •  

In the end output the average treasure gain which is the sum of all treasure items length divided by the count of all items inside the chest formatted to the second decimal point:

"Average treasure gain: {averageGain} pirate credits."

If the chest is empty print the following message:

"Failed treasure hunt."

Input

  • On the 1st line you are going to receive the initial treasure chest (loot separated by '|')
  • On the next lines, until "Yohoho!", you will be receiving commands.

Output

  • Print the output in the format described above.

Constraints

  • The loot items will be strings containing any ASCII code.
  • The indexes will be integers in the range [-200200]
  • The count will be an integer in the range [1….100]

Examples

Input

Output

Gold|Silver|Bronze|Medallion|Cup

Loot Wood Gold Coins

Loot Silver Pistol

Drop 3

Steal 3

Yohoho!

Medallion, Cup, Gold

Average treasure gain: 5.40 pirate credits.

Comments

The first command "Loot Wood Gold Coins" adds Wood and Coins to the chest but omits Gold since it is already contained. The chest now has the following items:

Coins Wood Gold Silver Bronze Medallion Cup

The second command adds only Pistol to the chest

The third command "Drop 3" removes the Gold from the chest, but immediately adds it at the end:

Pistol Coins Wood Silver Bronze Medallion Cup Gold

The fourth command "Steal 3" removes the last 3 items Medallion, Cup, Gold from the chest and prints them.

In the end calculate the average treasure gain which is the sum of all items length Pistol(6) + Coins(5) + Wood(4)  + Silver(6) + Bronze(6) = 27 and divide it by the count 27 / 5 = 5.4 and format it to the second decimal point.

 

Input                                                                                            Output

Diamonds|Silver|Shotgun|Gold

Loot Silver Medals Coal

Drop -1

Drop 1

Steal 6

Yohoho!

Coal, Diamonds, Silver, Shotgun, Gold, Medals

Failed treasure hunt.

ето го и моя код : https://pastebin.com/vkiSiWjX

Благодаря предварително :) 

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

Hmm, many issues. Try to compare with codes from other collegues and fix remaining problems.

Code(not finished):

function treasure(arr) {
    let theTreasure = arr.shift().split('|');
    // let command = arr.shift();
    let line = arr.shift();

    while (true) {

        // let tokens = command.split('')
        let [command, ...items] = line.split(' ');

        if (command === 'Yohoho!') {
            break;
        }

        if (command == 'Loot') {
            for (let j = 1; j < items.length; j++) {
                if (!theTreasure.includes(items[j])) { // j !!!
                    theTreasure.push(items[j]);
                }
            }
        } else if (command == ' Drop') {
            let index = Number(items[0]);
            if (index >= 0 && index < theTreasure.length) {
                // let theLoot = theTreasure.pop(index);
                // Removes the last element from an array and returns it
                let theLoot = theTreasure.splice(index, 1);
                theTreasure.push(theLoot)
            }
        } else if (command == 'Steal') {
            let steal = [];
            let count = Number(items[0]);

            //someone steals the last count loot items. 
            //If there are less items than the given count remove as much as there are.

            // if (count < theTreasure.length) {
            //     for (let i = theTreasure.length - count; i < theTreasure.length; i++) {
            //         steal.push(theTreasure[i])
            //     }
            //     console.log(steal.join(', '));
            // }
        }

        line = arr.shift();
    }

    if (theTreasure.length == 0) {
        console.log('Failed treasure hunt.');
    } else {
        let average = theTreasure.length
        console.log(`Average treasure gain: ${average.toFixed(2)} pirate credits.`);
    }
}

 

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