public static Ship Parse(string s)
{
string[] parts = s.Split(delimiters);
if (parts.Length != 3)
throw new ArgumentException("s");
Position p1 = Position.Parse(parts[1]);
Position p2 = Position.Parse(parts[2]);
if (p2 < p1)
{
Position swap = p1;
p1 = p2;
p2 = swap;
}
Ship ship = new Ship() { Position = p1, Size = p1 - p2 + 1, Orientation = (p1.Row == p2.Row) ? Orientation.Horizontal : Orientation.Vertical, Code = parts[0] };
return ship;
}