Проблем при една изпитна задача от изпита от 09.08.2020год.-Destination Mapper
Здравейте колеги,
Опитвам се да реша задачата като използвам един регекс,но явно не го правя по правилният начин.
Ше се радвам ако някой ми посочи грешките или сподели негово по-добро решение.
Условието на задачата може да се види от линка:
https://judge.softuni.bg/Contests/Practice/Index/2518#1
Ето и моят код:
https://pastebin.com/vehKrNWg
Thank you.
Моля!
Можеш ли да поясниш какво точно прави тази част от патерна " {2,})\1 "
{2,} казва, че искаме да хванем 2 или повече букви чрез условието [A-Za-z], защото {2,} е точно след него, като преди това сме хванали една главна буква с условието [A-Z] и така стават общо 3 или повече букви, като така изпълняваме едно от нещата, които се искат в задачата: The letters must be at least 3.
\1 казва, че на това място искаме да повторим търсенето според условието в първа група ([=/]) - в скоби ограждаме групи и можем да казваме къде коя група искаме да се потърси отново.
Да,мерси.
Моля.
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
namespace starEnigmaFinal
{
class Program
{
static void Main(string[] args)
{
string destinationPattern = @"([=\/])([A-Z][A-Za-z]{2,})\1";
int travelPoints = 0;
var destinations = new List<string>();
//INPUT
string input = Console.ReadLine();
Regex regex = new Regex(destinationPattern, RegexOptions.Compiled);
foreach(Match currentMatch in regex.Matches(input))
{
string dest = currentMatch.Groups[2].Value;
destinations.Add(dest);
travelPoints += dest.Length;
}
Console.WriteLine($"Destinations: {string.Join(", ", destinations)}");
Console.WriteLine($"Travel Points: {travelPoints}");
}
}
}