+ private static IEnumerable<string> ProcessBattleLog(string[] data)\r
+ {\r
+ if (data.Length == 35)\r
+ data = data.Concat(Enumerable.Repeat("", 3)).ToArray();\r
+ if (data.Length != 38)\r
+ return data;\r
+ return AddDamagedShip(data);\r
+ }\r
+\r
+ private static IEnumerable<string> AddDamagedShip(string[] data)\r
+ {\r
+ var damaged = new List<string>();\r
+ for (var i = 11; i < 11 + 12; i += 2)\r
+ {\r
+ var ship = data[i];\r
+ if (ship == "")\r
+ continue;\r
+ var hp = data[i + 1];\r
+ try\r
+ {\r
+ if (ship.Contains("・"))\r
+ {\r
+ var ships = ship.Split('・');\r
+ var hps = hp.Split('・');\r
+ var nowMax = hps[0].Split('/').Select(int.Parse).ToArray();\r
+ if (ShipStatus.CalcDamage(nowMax[0], nowMax[1]) == ShipStatus.Damage.Badly)\r
+ damaged.Add(ships[0]);\r
+ nowMax = hps[1].Split('/').Select(int.Parse).ToArray();\r
+ if (ShipStatus.CalcDamage(nowMax[0], nowMax[1]) == ShipStatus.Damage.Badly)\r
+ damaged.Add(ships[1]);\r
+ }\r
+ else\r
+ {\r
+ var nowMax = hp.Split('/').Select(int.Parse).ToArray();\r
+ if (ShipStatus.CalcDamage(nowMax[0], nowMax[1]) == ShipStatus.Damage.Badly)\r
+ damaged.Add(ship);\r
+ }\r
+ }\r
+ catch (FormatException)\r
+ {\r
+ return data;\r
+ }\r
+ }\r
+ return data.Take(23).Concat(new []{string.Join("・", damaged)}).Concat(data.Skip(23));\r
+ }\r
+\r