1
0

feat: complete second half of "Lab4.ChainedWords"

This commit is contained in:
Rokas Puzonas 2021-11-25 03:11:02 +02:00
parent f028cfba89
commit 3a6de12fc0
2 changed files with 58 additions and 8 deletions

View File

@ -1,7 +1,4 @@
Vienas QRSs!!?SABC V ABC
.
CEF FEG GOF
QRS SABC
Reikia teksto žodžius sulygiuoti, kad kiekvienos eilutės kiekvienas žodis
prasidėtų fiksuotoje toje pačioje pozicijoje. Galima įterpti tik minimalų
būtiną tarpų skaičių. Reikia šalinti iš pradinio teksto kelis iš eilės einančius
vienodus skyriklius, paliekant tik vieną jų atstovą. Įterpimo taisyklę taikome,

View File

@ -114,8 +114,61 @@ namespace Lab4.ChainedWords
}
}
public static void ProcessAligned(string input, string ouput, string punctuation)
private static IEnumerable<string> ReadByLines(string filename)
{
string line;
using (StreamReader reader = new StreamReader(filename))
{
while((line = reader.ReadLine()) != null)
{
yield return line;
}
}
}
public static void ProcessAligned(string inputFile, string outputFile, string punctuation)
{
string pattern = string.Format(@"[^{0}]+[{0}]*", Regex.Escape(punctuation));
string text = File.ReadAllText(inputFile, Encoding.UTF8);
Dictionary<int, int> columns = new Dictionary<int, int>();
List<List<string>> words = new List<List<string>>();
foreach (string line in ReadByLines(inputFile))
{
List<string> row = new List<string>();
words.Add(row);
int column = 0;
foreach (Match match in Regex.Matches(line, pattern))
{
string word = match.Value.TrimEnd('\n');
row.Add(word);
if (!columns.ContainsKey(column))
{
columns.Add(column, 0);
}
columns[column] = Math.Max(columns[column], word.Length);
column++;
}
}
using (StreamWriter writer = new StreamWriter(outputFile))
{
foreach (List<string> row in words)
{
int column = 0;
for (int i = 0; i < row.Count; i++)
{
string word = row[i];
writer.Write(word);
if (i < row.Count-1)
{
writer.Write(new string(' ', columns[column]-word.Length));
}
column++;
}
writer.Write("\n");
}
}
}
}
}