Advertisement
Guest User

Untitled

a guest
Feb 20th, 2020
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.83 KB | None | 0 0
  1. public class DataParser
  2. {
  3. public ParseResult ReadData(string fileName)
  4. {
  5. var assembly = Assembly.GetExecutingAssembly();
  6. var resourceName = fileName;
  7. var commonData = new CommonData();
  8. ParseResult resultData = new ParseResult();
  9. List<int> orderedScoreList = new List<int>();
  10.  
  11. using (Stream stream = assembly.GetManifestResourceStream(resourceName))
  12. using (StreamReader reader = new StreamReader(stream))
  13. {
  14. var line = 0;
  15. var libraryId = 0;
  16. while(!reader.EndOfStream)
  17. {
  18. string result = reader.ReadLine();
  19. if(result.Length == 0)
  20. {
  21. continue;
  22. }
  23.  
  24. if(line < 2)
  25. {
  26. if(line == 0)
  27. {
  28. var rawData = result.Split(" ");
  29. commonData.BooksCount = int.Parse(rawData[0]);
  30. commonData.LibririesCount = int.Parse(rawData[1]);
  31. commonData.DaysForScanning = int.Parse(rawData[2]);
  32.  
  33. resultData = new ParseResult
  34. {
  35. commonData = commonData,
  36. libraryDatas = new LibraryData[commonData.LibririesCount]
  37. };
  38. }
  39. else
  40. {
  41. orderedScoreList = result.Split(" ").Select(x => int.Parse(x)).ToList();
  42. }
  43. }
  44. else
  45. {
  46. var rawData = result.Split(" ");
  47.  
  48. if (line % 2 == 0)
  49. {
  50. var libraryData = new LibraryData
  51. {
  52. LibraryId = libraryId,
  53. BooksCount = int.Parse(rawData[0]),
  54. DaysForSignUp = int.Parse(rawData[1]),
  55. ShipBooksPerDay = int.Parse(rawData[2]),
  56. Books = new Book[int.Parse(rawData[0])]
  57. };
  58.  
  59. resultData.libraryDatas[libraryId] = libraryData;
  60. } else
  61. {
  62. var libraryData = resultData.libraryDatas[libraryId];
  63.  
  64. for(var i = 0; i < rawData.Length; i++)
  65. {
  66. var bookId = int.Parse(rawData[i]);
  67. libraryData.Books[i] = new Book
  68. {
  69. Id = bookId,
  70. Score = orderedScoreList[bookId]
  71. };
  72. }
  73.  
  74. libraryId++;
  75. }
  76. }
  77.  
  78. line++;
  79. }
  80. }
  81.  
  82. return resultData;
  83. }
  84. }
  85.  
  86. public struct CommonData
  87. {
  88. public int BooksCount;
  89. public int LibririesCount;
  90. public int DaysForScanning;
  91. }
  92.  
  93. public struct LibraryData
  94. {
  95. public int LibraryId;
  96. public int BooksCount;
  97. public int DaysForSignUp;
  98. public int ShipBooksPerDay;
  99. public Book[] Books;
  100. }
  101.  
  102. public struct Book
  103. {
  104. public int Id;
  105. public int Score;
  106. }
  107.  
  108. public struct ParseResult
  109. {
  110. public CommonData commonData;
  111. public LibraryData[] libraryDatas;
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement