+ Нов въпрос
AnzhelaNurieva 3 Точки

## 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 8 Точки

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

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

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

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

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

0