How to run:
1. compile using: stack ghc -- -O2 -threaded -rtsopts -eventlog test.hs
-the compilation line is drawn from the format presented in the ppt slides: http://www.cs.columbia.edu/~sedwards/classes/2020/4995-fall/par.pdf

2. run with:
./test or ./test board
where board is the first arg: valid inputs are board1, board2, or board3
(i.e. ./test board1 or ./test board2 or ./test board3)
-if no argument is entered (i.e. ./test), then it will default to running board1
-each board demonstrates a different game state. For instance, board1 is the default board
which is the usual start state of Othello: 4 pieces in the middle squars (2 black, 2 white).
Board2 and Board3 both demonstrate a mid-game state of Othello where board2 has the player 
with the black pieces in the lead, while board3 has the player with the white pieces in the lead.
Both boards will result in a different output and final outcome of the game itself.
-if no argument is entered, the game will use the default board: board1, which is the standard
start state of the board for Othello

To run testing with a different number of cores:
-1 core: ./test board +RTS -N1 -s
-2 cores: ./test board +RTS -N2 -s
-3 cores: ./test board +RTS -N3 -s
-4 cores: ./test board +RTS -N4 -s
(board is the first arg, enter which board you want to test)
(the format here is also drawn from the ppt slides linked earlier)

Depth:
The depth used is determined by the depth_set variable.
It is currently set to 4, but can be adjusted manually to test at different depths.

Analyzing with threadscope:
-generate eventlog: ./test +RTS -N1 -l (N1 can be substitute with any number of cores)
-run: ./threadscope and open test.eventlog in threadscope

