More Exercise: Strings and Text Processing , Treasure Finder Задача , C#
И двата инпута от условието (с които между другото имах проблеми при въвеждането с копи пейст) дават във ВС 2019 верен резултат!
Но джъдж дава 20 от 100... Ако някой има време и желание, моля за предложения!
using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
namespace TreasureFinder
{
class Program
{
static void Main(string[] args)
{
int[] keys = Console.ReadLine().Split(" ", StringSplitOptions.RemoveEmptyEntries)
.Select(int.Parse).ToArray();
string input = string.Empty;
StringBuilder decrypted = new StringBuilder();
Dictionary<string, string> found = new Dictionary<string, string>();
int typeFirstIndex = 0;
int typeLastIndex = 0;
int coordinatesFirstIndex = 0;
int coordinatesLastIndex = 0;
string metal = string.Empty;
string coordinates = string.Empty;
while ((input = Console.ReadLine()) != "find")
{
int counter = 0;
for (int i = 0; i < input.Length; i++)
{
int decreased = input[i] - keys[counter];
counter++;
if (counter > 3)
{
counter = 0;
}
decrypted.Append((char)decreased);
}
typeFirstIndex = decrypted.ToString().IndexOf('&');
typeLastIndex = decrypted.ToString().LastIndexOf('&');
coordinatesFirstIndex = decrypted.ToString().IndexOf('<');
coordinatesLastIndex = decrypted.ToString().IndexOf('>');
metal = decrypted.ToString().Substring(typeFirstIndex + 1, typeLastIndex - typeFirstIndex - 1);
coordinates = decrypted.ToString().Substring(coordinatesFirstIndex + 1, coordinatesLastIndex - coordinatesFirstIndex - 1);
found.Add(metal, coordinates);
decrypted.Clear();
}
foreach (var item in found)
{
Console.WriteLine($"Found {item.Key} at {item.Value}");
}
}
}
}