Mam problem z tym zadaniem. Napisałam program, który działa ale jest za duży. Przy zgłaszaniu go dostaję komunikat: Your solution is too long for this problem, the limit is 5000 bytes!
Czy jest jakiś tajny sposób, w który mogłabym go "zmniejszyć"?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ca_Spoj_11842
{
class Program
{
private class PrintedLetter
{
public string Line1 { get; set; }
public string Line2 { get; set; }
public string Line3 { get; set; }
public string ReversedLine1
{
get{return Reverse(Line1);}
}
public string ReversedLine2
{
get{return Reverse(Line2);}
}
public string ReversedLine3
{
get{ return Reverse(Line3);}
}
private string Reverse(string stringToReverse)
{
string line = string.Empty;
for (int i = stringToReverse.Length - 1; i >= 0; i--)
{
char c = stringToReverse[i];
switch (c)
{
case '/':
line += '\';
break;
case '\':
line += '/';
break;
default:
line += c;
break;
}
}
return line;
}
}
static void Main(string[] args)
{
Dictionary letterDictionary = new Dictionary();
PrintedLetter space = new PrintedLetter() { Line1 = @" ", Line2 = @" ", Line3 = @" " };
letterDictionary.Add(' ', space);
PrintedLetter letterA = new PrintedLetter() { Line1 = @" __ ", Line2 = @"|__| ", Line3 = @"| | " };
letterDictionary.Add('A', letterA);
PrintedLetter letterB = new PrintedLetter() { Line1 = @" __ ", Line2 = @"|__\ ", Line3 = @"|__/ " };
letterDictionary.Add('B', letterB);
PrintedLetter letterC = new PrintedLetter() { Line1 = @" __ ", Line2 = @"| ", Line3 = @"|__ " };
letterDictionary.Add('C', letterC);
PrintedLetter letterD = new PrintedLetter() { Line1 = @" __ ", Line2 = @"| \ ", Line3 = @"|__/ " };
letterDictionary.Add('D', letterD);
PrintedLetter letterE = new PrintedLetter() { Line1 = @" __ ", Line2 = @"|_ ", Line3 = @"|__ " };
letterDictionary.Add('E', letterE);
PrintedLetter letterF = new PrintedLetter() { Line1 = @" __ ", Line2 = @"|_ ", Line3 = @"| " };
letterDictionary.Add('F', letterF);
PrintedLetter letterG = new PrintedLetter() { Line1 = @" __ ", Line2 = @"| _ ", Line3 = @"|__| " };
letterDictionary.Add('G', letterG);
PrintedLetter letterH = new PrintedLetter() { Line1 = @" ", Line2 = @"|__| ", Line3 = @"| | " };
letterDictionary.Add('H', letterH);
PrintedLetter letterI = new PrintedLetter() { Line1 = @" ", Line2 = @" | ", Line3 = @" | " };
letterDictionary.Add('I', letterI);
PrintedLetter letterJ = new PrintedLetter() { Line1 = @" _ ", Line2 = @" | ", Line3 = @" _| " };
letterDictionary.Add('J', letterJ);
PrintedLetter letterK = new PrintedLetter() { Line1 = @" ", Line2 = @"|_/ ", Line3 = @"| \ " };
letterDictionary.Add('K', letterK);
PrintedLetter letterL = new PrintedLetter() { Line1 = @" ", Line2 = @"| ", Line3 = @"|__ " };
letterDictionary.Add('L', letterL);
PrintedLetter letterM = new PrintedLetter() { Line1 = @" ", Line2 = @"|\/| ", Line3 = @"| | " };
letterDictionary.Add('M', letterM);
PrintedLetter letterN = new PrintedLetter() { Line1 = @" ", Line2 = @"|\ | ", Line3 = @"| \| " };
letterDictionary.Add('N', letterN);
PrintedLetter letterO = new PrintedLetter() { Line1 = @" __ ", Line2 = @"| | ", Line3 = @"|__| " };
letterDictionary.Add('O', letterO);
PrintedLetter letterP = new PrintedLetter() { Line1 = @" __ ", Line2 = @"|__| ", Line3 = @"| " };
letterDictionary.Add('P', letterP);
PrintedLetter letterR = new PrintedLetter() { Line1 = @" __ ", Line2 = @"|__| ", Line3 = @"| \ " };
letterDictionary.Add('R', letterR);
PrintedLetter letterS = new PrintedLetter() { Line1 = @" __ ", Line2 = @"|__ ", Line3 = @" __| " };
letterDictionary.Add('S', letterS);
PrintedLetter letterT = new PrintedLetter() { Line1 = @"___ ", Line2 = @" | ", Line3 = @" | " };
letterDictionary.Add('T', letterT);
PrintedLetter letterU = new PrintedLetter() { Line1 = @" ", Line2 = @"| | ", Line3 = @"|__| " };
letterDictionary.Add('U', letterU);
PrintedLetter letterW = new PrintedLetter() { Line1 = @" ", Line2 = @"| | ", Line3 = @"|/\| " };
letterDictionary.Add('W', letterW);
PrintedLetter letterY = new PrintedLetter() { Line1 = @" ", Line2 = @"_/ ", Line3 = @" | " };
letterDictionary.Add('Y', letterY);
PrintedLetter letterZ = new PrintedLetter() { Line1 = @" _ ", Line2 = @" / ", Line3 = @" / " };
letterDictionary.Add('Z', letterZ);
string input = Console.ReadLine();
string[] split = input.Split(' ');
int direction = -1;
if (int.TryParse(split[0], out direction) == false)
{
Console.WriteLine("nie udalo sie");
Console.ReadLine();
return;
}
string sentence = split[1];
for (int i = 2; i < split.Length; i++)
{
sentence = sentence + " " + split[i];
}
char[] array = sentence.ToUpper().ToCharArray();
if (direction == 2)
{
Array.Reverse(array);
}
StringBuilder wholeLine1 = new StringBuilder();
StringBuilder wholeLine2 = new StringBuilder();
StringBuilder wholeLine3 = new StringBuilder();
for (int i = 0; i < array.Length; i++)
{
char c = array[i];
PrintedLetter pl = letterDictionary[c];
string line1 = string.Empty;
string line2 = string.Empty;
string line3 = string.Empty;
if (direction == 2)
{
line1 = pl.ReversedLine1;
line2 = pl.ReversedLine2;
line3 = pl.ReversedLine3;
}
else
{
line1 = pl.Line1;
line2 = pl.Line2;
line3 = pl.Line3;
}
wholeLine1.Append(line1);
wholeLine2.Append(line2);
wholeLine3.Append(line3);
}
Console.WriteLine(wholeLine1);
Console.WriteLine(wholeLine2);
Console.WriteLine(wholeLine3);
Console.ReadLine();
}
}
}