Guest User

Untitled

a guest
Dec 14th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.10 KB | None | 0 0
  1. #pragma once
  2. #include<array>
  3. using std::array;
  4. #include<utility>
  5. using std::pair;
  6.  
  7. constexpr auto infile = "Day13Input.txt";
  8. constexpr auto track_size = 150;
  9.  
  10. namespace Day13 {
  11. enum Track {
  12. None = 0,
  13. Vert = 1,
  14. Flat = 2,
  15. Cross = 3,
  16. Hack = 4,
  17. Slash = 5,
  18. };
  19.  
  20. enum Dir {
  21. Up = 0,
  22. Right = 1,
  23. Down = 2,
  24. Left = 3,
  25. };
  26.  
  27. enum Turn {
  28. LeftTurn = -1,
  29. Straight = 0,
  30. RightTurn = 1,
  31. };
  32.  
  33. class Cart {
  34. private:
  35. Dir _dir;
  36. Turn _turn_dir;
  37.  
  38. void derail ( ) const;
  39. void turn ( const Track t );
  40. pair<int, int> dest ( ) const;
  41. Track lookup_dest ( const pair<int, int> ) const;
  42.  
  43. public:
  44. static array<array<Track, track_size>, track_size> tracks;
  45. int _x, _y;
  46. Cart ( int x, int y, Dir dir ) : _x ( x ), _y ( y ), _dir ( dir ), _turn_dir ( Turn::LeftTurn ) { };
  47.  
  48. int move ( );
  49.  
  50. bool operator<( const Cart& rhs ) const;
  51. bool operator==( const Cart& rhs ) const;
  52. bool operator>( const Cart& rhs ) const;
  53. };
  54. }
Add Comment
Please, Sign In to add comment