Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият.
Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание.
Използваме бисквитки и за измерване на маркетинговите ни усилия.
Здравейте,
сега решавам тази задача и имам същия проблем. Проверката, която препоръчва колегата по-горе я има в кода и въпреки това дава 60/100. Имате ли представа къде е проблема?
Пускам ти направо моето решение
using System;
using System.Linq;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Text;
namespace _6.Courses
{
class Program
{
public static void Main()
{
int count = int.Parse(Console.ReadLine());
Dictionary<string, Dictionary<string, List<string>>> register = new Dictionary<string, Dictionary<string, List<string>>>();
for (int i = 0; i < count; i++)
{
string[] input = Console.ReadLine().Split();
string continent = input[0];
string country = input[1];
string city = input[2];
if (!register.ContainsKey(continent))
{
register.Add(continent, new Dictionary<string, List<string>>());
}
if (!register[continent].ContainsKey(country))
{
register[continent].Add(country, new List<string>());
}
register[continent][country].Add(city);
}
foreach (var currentContinent in register)
{
Console.WriteLine($"{currentContinent.Key}:");
foreach (var currentCountry in currentContinent.Value)
{
Console.WriteLine($" {currentCountry.Key} -> {string.Join(", ", currentCountry.Value)}");
}
}
}
}
}
Благодаря!
И аз благодаря, защото и аз имах същия проблем като колегите, на които им дава 60/100.
Решението на колегата nickwork наистина дава 100/100 но така има възможност градовете да се повтарят. Например ако подам следните данни:
3
Europe Germany Berlin
Europe Germany Berlin
Europe Germany Berlin
Ще ми даде:
Europe:
Germany -> Berlin, Berlin, Berlin
Наистина в условието на задачата не се споменава, че градовете не могат да се повтарят, но за мен лично това си беше доста заблуждаващо и изгубих много време.
Като бърз вариант за решаване на този проблем е вместо лист да използваш един хеш сет и всичко става 6...сигурно по условие това го няма за повтарящи се градове и най вероятно за това не съм го предвидил а и щом е дало 100/100...иначе забележката ти е уместна :) , в реален проект такива ситуации трябва добре да се обмислят good job, че обръщаш внимание на такива моменти...а самата задача тества дали сме разбрали идеята на речниците...без всичките и гранични положения които могат в последствие да изникнат...
Здравейте, имам същия проблем и както колега е казал долу ползвам HashSet, но въпреки това взимам само 60/100. Прилагам кода:
using System;
using System.Linq;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Text;
namespace Exam
{
class Program
{
static void Main(string[] args)
{
var counter = int.Parse(Console.ReadLine());
var dictionary = new Dictionary<string, Dictionary<string, HashSet<string>>>();
for (int i = 0; i < counter; i++)
{
var input = Console.ReadLine().Split(' ').ToArray();
var continent = input[0];
var country = input[1];
var city = input[2];
if (!dictionary.ContainsKey(continent))
{
dictionary.Add(continent, new Dictionary<string, HashSet<string>>());
}
if (!dictionary[continent].ContainsKey(country))
{
dictionary[continent].Add(country, new HashSet<string>());
}
if (!dictionary[continent][country].Contains(city))
{
dictionary[continent][country].Add(city);
}
}
foreach (var (continent, country) in dictionary)
{
Console.WriteLine($"{continent}: ");
foreach (var currentCountry in country)
{
Console.WriteLine($"{currentCountry.Key} -> {string.Join(", ", currentCountry.Value)}");
}
}
}
}
}