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

07. String Explosion

Здравейте имам проблем с задача 07. String Explosion от Programming Fundamentals C#/Text Processing/Exercise. Дава ми 25/100 и понеже не намерих решение подобно на моето а аз искам да разбера как да я реша по моя начин моля за помощ. Благодаря предварително

 

 

Условие:

Explosions are marked with '>'. Immediately after the mark, there will be an integer, which signifies the strength of the explosion.

You should remove x characters (where x is the strength of the explosion), starting after the punched character ('>').

If you find another explosion mark ('>') while you're deleting characters, you should add the strength to your previous explosion.

When all characters are processed, print the string without the deleted characters.

You should not delete the explosion character – '>', but you should delete the integers, which represent the strength.

 

 

Моето решение:

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

namespace zad._7
{
    class Program
    {
        static void Main(string[] args)
        {
            var input = Console.ReadLine().ToList();
            int leftover = 0;
            for (int i = 0; i < input.Count; i++)
            {
                int strength = 0;
                if (input[i]=='>')
                {
                    strength = int.Parse(input[i + 1].ToString()) + leftover;
                    leftover = 0;
                } 
                if (strength==1)
                {
                    input.RemoveAt(i + 1);
                }
                else if(strength>1)
                {
                    for (int j = 0; j < strength; j++)
                    {
                        if (input[i + 1] != '>')
                        {
                            if (strength<=input.Count)
                            {
                                input.RemoveAt(i + 1);
                            }
                        }
                    }
                    leftover = strength - 1;
                }
            }
            Console.WriteLine(string.Join("", input));
        }
    }
}
 

Тагове:
1
C# Fundamentals
tt104 avatar tt104 15 Точки

100/100 python

a=str(input())
y=[c for c in a]
l=len(a)
q=0
for i in range(l):
    if q > 0:
        if y[i] != '>':
            q -= 1
            y[i] = ''
    if '>' == y[i] and i < l-1:
        j=i+1
        while j < l and y[j].isdigit(): j += 1
        n=int(a[i+1:j])
        q+=n
print(''.join(y))

"y" е еквивалентно на "List<char>" ... успех!

1
krum_43 avatar krum_43 756 Точки

Тук според мен условието не е много точно формулирано.Входа на един ред ли е или всяка експлозия е на нов ред?

Няма ли примери към условието?

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