示例#1
0
        public Trader()
        {
            //initialize  myPosition and trades by reading in values from csv files

            myPosition = new Position();
            trades = new List<Trade>();

            using (StreamReader sr2 = new StreamReader(@"c:/maple/Positions.csv"))
            {
                try
                {
                    sr2.ReadLine(); //moves internal pointer to next since 1st line are column names
                    while (!sr2.EndOfStream)
                    {
                        string[] temp2 = sr2.ReadLine().Split(new char[] { ',' });  //split by comma
                        myPosition.pos.Add(temp2[0], Convert.ToInt16(temp2[1])); //converting quantity to int for value
                    }
                }
                catch (IndexOutOfRangeException e) {  }
            }

            using (StreamReader sr = new StreamReader(@"c:/maple/Trades.csv"))
            {
                try
                {
                    sr.ReadLine(); //moves internal pointer to next since 1st line are column names
                    while (!sr.EndOfStream)
                    {
                        string[] temp = sr.ReadLine().Split(new char[]{','});
                        Trade t = new Trade(temp[0], temp[1], Convert.ToInt16(temp[2]), temp[3]);
                        trades.Add(t);
                    }
                }
                catch (IndexOutOfRangeException e) {  }
            }
        }
示例#2
0
 public static void PlaceOnBoard(string word, Position pos, Direction dir)
 {
     int x = pos.X;
     int y = pos.Y;
     for (int i = 0; i < word.Length; i++)
     {
         switch (dir)
         {
             case Direction.Down:
                 Board[y + i][x] = word[i];
                 break;
             case Direction.Left:
                 Board[y][x - i] = word[i];
                 break;
             case Direction.Right:
                 Board[y][x + i] = word[i];
                 break;
             case Direction.Up:
                 Board[y - i][x] = word[i];
                 break;
         }
     }
 }
示例#3
0
        static List<Position> GetNeighbours(Position currentPosition, char[, ,] cube)
        {
            var neighbours = new List<Position>();
            
            //left
            if (currentPosition.Col > 0)
            {
                neighbours.Add(new Position(currentPosition.Level, currentPosition.Row, currentPosition.Col - 1, currentPosition.Depth+1));
            }

            //right
            if (currentPosition.Col < cols - 1)
            {
                neighbours.Add(new Position(currentPosition.Level, currentPosition.Row, currentPosition.Col + 1, currentPosition.Depth + 1));
            }
            
            //forward
            if (currentPosition.Row < rows - 1)
            {
                neighbours.Add(new Position(currentPosition.Level, currentPosition.Row + 1, currentPosition.Col, currentPosition.Depth + 1));
            }
            
            //back
            if (currentPosition.Row > 0)
            {
                neighbours.Add(new Position(currentPosition.Level, currentPosition.Row - 1, currentPosition.Col, currentPosition.Depth + 1));
            }

            //up
            //down
            if (cube[currentPosition.Level, currentPosition.Row, currentPosition.Col] == 'U')
            {
                neighbours.Add(new Position(currentPosition.Level + 1, currentPosition.Row, currentPosition.Col, currentPosition.Depth + 1));
            }

            else if (cube[currentPosition.Level, currentPosition.Row, currentPosition.Col] == 'D')
            {
                neighbours.Add(new Position(currentPosition.Level - 1, currentPosition.Row, currentPosition.Col, currentPosition.Depth + 1));
            }

            neighbours.RemoveAll(pos => cube[pos.Level, pos.Row, pos.Col] == '#');

            return neighbours;
        }
示例#4
0
        static int GetShortestRoutDistanceBfs(char[, ,] cube, Position startPosition)
        {
            Queue<Position> toVisit = new Queue<Position>();
            toVisit.Enqueue(startPosition);

            Position currentPosition;
            while (toVisit.Count > 0)
            {
                currentPosition = toVisit.Dequeue();
                //visited[currentPosition.Level, currentPosition.Row, currentPosition.Col] = true;

                var neighbours = GetNeighbours(currentPosition, cube);

                cube[currentPosition.Level, currentPosition.Row, currentPosition.Col] = '#';

                foreach (var neighbour in neighbours)
                {
                    //var dgsrghhd = IsExit(neighbour, cube);
                    if (IsExit(neighbour, cube))
                    {
                        return neighbour.Depth + 1;
                    }

                    toVisit.Enqueue(neighbour);
                }
            }

            return -1;
        }
示例#5
0
 static bool IsExit(Position position, char[, ,] cube)
 {
     return (position.Level >= levels - 1 && cube[position.Level, position.Row, position.Col] == 'U') || (position.Level <= 0 && cube[position.Level, position.Row, position.Col] == 'D');
 }