Loading...
nadejda91iv avatar nadejda91iv 11 Точки

03. Moving Target

Здравейте, може ли малко помощ за тази задача: https://judge.softuni.bg/Contests/Practice/Index/2305#2

Получавам 50/100 и run time error, но не разбирам защо.

https://pastebin.com/ur7UNygE

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

 

Тагове:
1
Fundamentals Module
Elena123456 avatar Elena123456 235 Точки
Best Answer

Здравейте,

заповядайте поправеното решение 100/100 и с обясняния къде какво е добавено. Според мен решението ви е много добро, само с една правописна грешка за валидацията на идекса на ред 53, която впрочем сте я направили правилно за другите команди. И от условието не става ясно, че за Shoot командата трябва да се направи допълнително една проверка дали стойността на таргета е по-голяма от power и чак тогава трябва да се редуцира стойността му.

Поздрави и успех!

using System;
using System.Collections.Generic;
using System.Linq;

namespace Moving_Target
{
    class Program
    {
        static void Main(string[] args)
        {
            List<int> targets = Console.ReadLine()
                .Split(" ", StringSplitOptions.RemoveEmptyEntries)
                .Select(int.Parse)
                .ToList();
            string command = Console.ReadLine();
            while (command != "End")
            {
                string[] comArg = command.Split(" ", StringSplitOptions.RemoveEmptyEntries).ToArray();
                string firstCom = comArg[0];
                int index = int.Parse(comArg[1]);
                int power = int.Parse(comArg[2]);
                if (firstCom == "Shoot")
                {
                    if (index >= 0 && index < targets.Count)
                    {
                        if (targets[index] > power) // if targets is bigger than power
                        {
                            targets[index] -= power;
                        }
                        else
                        {
                            targets.RemoveAt(index);
                        }

                    }
                }

                else if (firstCom == "Add")
                {
                    if (index >= 0 && index < targets.Count)
                    {
                        targets.Insert(index, power);
                    }
                    else
                    {
                        Console.WriteLine($"Invalid placement!");
                    }
                }

                else if (firstCom == "Strike")
                {

                    if (index - power >= 0 && index + power < targets.Count) // validate index and radius
                    {
                        targets.RemoveRange(index - power, power * 2 + 1);
                    }
                    else
                    {
                        Console.WriteLine($"Strike missed!");
                    }
                }
                    command = Console.ReadLine();
                }

                Console.WriteLine(string.Join("|", targets));
            }
        }
    }

 

И още нещо- съвсем в началото сте дефинирали, че командата ще има име, индекс и сила. Това съм го запазила така за всички команди. Но най-удачния вариант би бил да си се дефинират имената за всяка една команда, както си е по условие, но все пак на Judge това не му пречи. smiley

0
07/02/2021 15:42:33
nadejda91iv avatar nadejda91iv 11 Точки

Много ви благодаря :) Изчерпателен отговор и ми помогнахте :) 

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