AnzhelaNurieva 4 Точки

## 05. Nether Realms

решение 80/100 => https://pastebin.com/L5h5dUBe

ако може да погледнете решението ми, мисля че проблема е в регекса.

1. *Nether Realms

Mighty battle is coming. In the stormy nether realms, demons are fighting against each other for supremacy in a duel from which only one will survive.

Your job, however is not so exciting. You are assigned to sign in all the participants in the nether realm's mighty battle's demon book, which of course is sorted alphabetically.

A demon's name contains his health and his damage.

The sum of the asci codes of all characters (excluding numbers (0-9), arithmetic symbols ('+', '-', '*', '/') and delimiter dot ('.')) gives a demon's total health.

The sum of all numbers in his name forms his base damage. Note that you should consider the plus '+' and minus '-' signs (e.g. +10 is 10 and -10 is -10). However, there are some symbols ('*' and '/') that can further alter the base damage by multiplying or dividing it by 2 (e.g. in the name "m15*/c-5.0", the base damage is 15 + (-5.0) = 10 and then you need to multiply it by 2 (e.g. 10 * 2 = 20) and then divide it by 2 (e.g. 20 / 2 = 10)).

So, multiplication and division are applied only after all numbers are included in the calculation and in the order they appear in the name.

You will get all demons on a single line, separated by commas and zero or more blank spaces. Sort them in alphabetical order and print their names along their health and damage.

Input

The input will be read from the console. The input consists of a single line containing all demon names separated by commas and zero or more spaces in the format: "{demon name}, {demon name}, … {demon name}"

Output

Print all demons sorted by their name in ascending order, each on a separate line in the format:

• "{demon name} - {health points} health, {damage points} damage"

Constraints

• A demon's name will contain at least one character

• A demon's name cannot contain blank spaces ' ' or commas ','

• A floating point number will always have digits before and after its decimal separator

• Number in a demon's name is considered everything that is a valid integer or floating point number (with dot '.' used as separator). For example, all these are valid numbers: '4', '+4', '-4', '3.5', '+3.5', '-3.5'

Examples

 Input Output Comments M3ph-0.5s-0.5t0.0** M3ph-0.5s-0.5t0.0** - cw524 health, 8.00 damage M3ph-0.5s-0.5t0.0**:  Health = 'M' + 'p' + 'h' + 's' + 't' = 524 health.  Damage = (3 + (-0.5) + (-0.5) + 0.0) * 2 * 2 = 8 damage. Input Output Comments M3ph1st0**, Azazel Azazel - 615 health, 0.00 damage   M3ph1st0** - 524 health, 16.00 damage Azazel:   Health - 'A' + 'z' + 'a' + 'z' + 'e' + 'l' = 615 health. Damage - no digits = 0 damage.    M3ph1st0**:  Health - 'M' + 'p' + 'h' + 's' + 't' = 524 health.  Damage - (3 + 1 + 0) * 2 * 2 = 16 damage. Gos/ho Gos/ho - 512 health, 0.00 damage
Тагове:
0
daniel_dimitrov5 30 Точки

Намерих една от грешките и тя е в сплита. Казано че се сплитва по ","(само запетайка) и може да има whitespace, дали отперед, дали отзад не е казано. Твоя код при вход който е разделен просто със "," без whitespace няма да работи. Трябва да бъде сплитнато чрез регекс.

``````List<string> input = Regex.Split(Console.ReadLine(), @" *,{1} *")
.Select(x => x.Trim())
.ToList();``````

С тази корекция кода е 90/100. Не знам къде е другата грешка, дава грешка при изпълнение за последния тест.

Ето моето решение: https://pastebin.com/bW0Zz5RU

Ползвам по-различна логика и патерни, може би от там ти е грешката :)

0
manasievk 1 Точки

Супер си, не се бях сетил за този вариант. Сплитвам по /\s*,\s*/ и мина всички тестове (Javascript)

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