Loading...
inaivanova1990 avatar inaivanova1990 33 Точки

Задача 4. Игра на карти "Number wars"

Здравейте, докарах го до 83 точки, но не мога да се сетя за още 17 :D  Някой ще помогне ли, моля!

https://pastebin.com/uxuSEwcX

Изпит по "Основи на програмирането" – 9 и 10 март 2019

Задача 4. Игра на карти "Number wars"

"Numbers" е нова игра, която се играе с 36 карти (двойки, тройки, четворки, петици, шестици, седмици, осмици, деветки и десетки от всички 4 бои). Правилата на играта са следните:

  • Играе се от двама играчи, които започват с равен брой карти
  • На всяко раздаване всеки един от тях дава по 1 карта:
    • Ако картата на първия играч е с по-голяма стойност от картата на втория играч, първият получава точки, които са равни на разликата между картата на първия и картата на втория (например: първият дава тройка купа, а вторият двойка каро -> първият печели, защото 3 > 2 и точките, които печели, са 3 – 2 = 1).
    • Ако картата на втория играч е с по-голяма стойност от картата на първия играч, вторият получава точки, които са равни на разликата между картата на втория и картата на първия (например: вторият дава осмица пика, а първият шестица спатия -> вторият печели, защото 8 > 6 и точките, които печели, са 8 – 6 = 2).
    • Ако картите, които дават двамата, са с еднаква стойност, тогава се получава "Number wars" и всеки един от играчите трябва да даде по още една карта. Играчът, чиято карта е с по-голяма стойност, печели и играта приключва(В този случай, няма да има еднакви карти).
  • Освен при "Number wars", играта може да приключи и при команда "End of game". Тогава никой не печели и играта приключва.

Вход

Първоначално се четат два реда:

  • Име на първия играч - текст
  • Име на втория играч - текст

След това, до получаване на команда "End of game", се четат многократно по два реда:

  1. Карта, която дава първият играч- цяло число в интервала [2…9]
  2. Карта, която дава вторият играч -  цяло число в интервала [2…9]

При еднакви карти на двамата играчи се прочитат нови два реда (карта, която дава първият и карта, която дава вторият.)

Изход

При случая, в който има "Number wars ", да се отпечата:

  • "Number wars!"
  • "{име на победителя} is winner with {брой натрупани точки} points"

При команда "End of game" да се отпечатат два реда:

  • "{име на първия играч} has {брой натрупани точки за първия играч} points"
  • "{име на втория играч} has {брой натрупани точки за втория играч} points"

Примерен вход и изход

Вход

Изход

Обяснения

Desi

Niki

7

5

3

4

3

3

5

3

Number wars!

Desi is winner with 2 points

Играчите са Деси и Ники

Първо раздаване:

Деси дава седмица (7), Ники дава петица (5):

  • Деси печели раздаването, защото 7 > 5 Точките, които печели от това раздаване, са:
  • – 5 = 2 -> Точките на Деси стават 2

Второ раздаване:

Деси дава тройка (3), Ники дава четворка (4):

  • Ники печели раздаването, защото 4 > 3. Точките, които печели от това раздаване, са:
  • – 3 = 1 -> Точките на Ники стават 1

Трето раздаване:

Деси дава тройка (3) и  Ники дава тройка (3):

  • Отпечатваме Number wars!
  • Прочитаме нови две карти:

       Деси дава петица (5), Ники дава тройка (3):

       5 > 3 -> Деси печели играта

       Отпечатваме натрупаните точки (2)

Elena

Simeon

6

3

2

5

8

9

End of game

Elena has 3 points

Simeon has 4 points

Играчите са Елена и Симеон

Първо раздаване:

Елена дава шестица (6), Симеон дава тройка (3):

  • Елена печели раздаването, защото 6 > 3 Точките, които печели от това раздаване, са:
  • – 3 = 3 -> Точките на Елена стават 3

Второ раздаване:

Елена дава двойка (2), Симеон дава петица (5):

  • Симеон печели раздаването, защото 5 > 2. Точките, които печели от това раздаване, са:
  • – 2 = 3 -> Точките на Симеон стават 3

Трето раздаване:

Елена дава осмица (8), Симеон дава деветка (9):

  • Симеон печели раздаването, защото 9 > 8. Точките, които печели от това раздаване, са:
  • – 8 = 1 -> Точките на Симеон стават 4

Получаваме End of game  и принтираме точките и на двамата.

Aleks

Georgi

4

5

3

2

4

3

4

4

5

2

Number wars!

Aleks is winner with 2 points

 

 

 

 

Тагове:
0
Programming Basics
Axiomatik avatar Axiomatik 2422 Точки
Best Answer

Better just use one array, the additional input2 just makes it more difficult and is not needed to solve this exercise.

Best,

function solve() {
    let input = [...arguments];
    // let input2 = [...arguments];
    //let command = input.shift();
    let playerOne = input.shift();
    let playerTwo = input.shift();
    let totalOne = 0;
    let totalTwo = 0;
    // let command = input2.shift();
    let command = input.shift();
    while (command !== "End of game") {
        let currentCardOne = Number(command);
        let currentCardTwo = Number(input.shift());

        if (currentCardOne > currentCardTwo) {
            totalOne += currentCardOne - currentCardTwo;

        } else if (currentCardOne < currentCardTwo) {
            totalTwo += currentCardTwo - currentCardOne;
        }

        else if (currentCardOne === currentCardTwo) {
            console.log("Number wars!");

            currentCardOne = Number(input.shift());
            currentCardTwo = Number(input.shift());

            // if (totalOne > totalTwo) {
            if (currentCardOne > currentCardTwo) {
                console.log(playerOne + " is winner with " + (totalOne) + " points");
            } else {
                console.log(playerTwo + " is winner with " + (totalTwo) + " points");
            }
            break;
        }

        command = input.shift();

        // currentCardOne = Number(input.shift());
        // currentCardTwo = Number(input.shift());

        //currentCardNext =Number(input.shift());
    }

    if (command === "End of game") {
        console.log(playerOne + " has " + (totalOne) + " points");
        console.log(playerTwo + " has " + (totalTwo) + " points");
    }
}

 

0
inaivanova1990 avatar inaivanova1990 33 Точки

Благодаря за бързите отговори:)

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