Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
72
Task/Text-processing-2/C-sharp/text-processing-2.cs
Normal file
72
Task/Text-processing-2/C-sharp/text-processing-2.cs
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.IO;
|
||||
|
||||
namespace TextProc2
|
||||
{
|
||||
class Program
|
||||
{
|
||||
static void Main(string[] args)
|
||||
{
|
||||
Regex multiWhite = new Regex(@"\s+");
|
||||
Regex dateEx = new Regex(@"^\d{4}-\d{2}-\d{2}$");
|
||||
Regex valEx = new Regex(@"^\d+\.{1}\d{3}$");
|
||||
Regex flagEx = new Regex(@"^[1-9]{1}$");
|
||||
|
||||
int missformcount = 0, totalcount = 0;
|
||||
Dictionary<int, string> dates = new Dictionary<int, string>();
|
||||
|
||||
using (StreamReader sr = new StreamReader("readings.txt"))
|
||||
{
|
||||
string line = sr.ReadLine();
|
||||
while (line != null)
|
||||
{
|
||||
line = multiWhite.Replace(line, @" ");
|
||||
string[] splitLine = line.Split(' ');
|
||||
if (splitLine.Length != 49)
|
||||
missformcount++;
|
||||
if (!dateEx.IsMatch(splitLine[0]))
|
||||
missformcount++;
|
||||
else
|
||||
dates.Add(totalcount + 1, dateEx.Match(splitLine[0]).ToString());
|
||||
int err = 0;
|
||||
for (int i = 1; i < splitLine.Length; i++)
|
||||
{
|
||||
if (i%2 != 0)
|
||||
{
|
||||
if (!valEx.IsMatch(splitLine[i]))
|
||||
err++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!flagEx.IsMatch(splitLine[i]))
|
||||
err++;
|
||||
}
|
||||
}
|
||||
if (err != 0) missformcount++;
|
||||
line = sr.ReadLine();
|
||||
totalcount++;
|
||||
}
|
||||
}
|
||||
|
||||
int goodEntries = totalcount - missformcount;
|
||||
Dictionary<string,List<int>> dateReverse = new Dictionary<string,List<int>>();
|
||||
|
||||
foreach (KeyValuePair<int, string> kvp in dates)
|
||||
{
|
||||
if (!dateReverse.ContainsKey(kvp.Value))
|
||||
dateReverse[kvp.Value] = new List<int>();
|
||||
dateReverse[kvp.Value].Add(kvp.Key);
|
||||
}
|
||||
|
||||
Console.WriteLine(goodEntries + " valid Records out of " + totalcount);
|
||||
|
||||
foreach (KeyValuePair<string, List<int>> kvp in dateReverse)
|
||||
{
|
||||
if (kvp.Value.Count > 1)
|
||||
Console.WriteLine("{0} is duplicated at Lines : {1}", kvp.Key, string.Join(",", kvp.Value));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue