   THE GAME
;; =============================================================================

  Acquire is played on a 12 x 9 board. 

  Columns are labeled with numbers between 1 and 12 (inclusive)
  and rows with letters from A, B, C, D, E, F, G, H, I. 
  Hence, each cell has a labeling consisting of a number and a letter. 

  Players receive tiles with the same kind of labeling as cells. 
  They place these tiles on the cells with the same labels. 

  Initially cells are unoccupied. Players place tiles on cells with the
  same label. To connect a tile to another one means being a neighbor along
  a vertical or horizontal line.

* Connecting a tile to single unoccupied one gives the player the right to
  build a hotel if a label is available. In return, the player receives a
  share in the newly created hotel. Building a hotel means the two tiles
  are now "occupied". 

* When a tile is connected to a hotel, it grows the hotel.

* When a tile is placed such that it establishes a connection between two
  existing hotels, a merger-and-acquisition event occurs. The larger hotel
  acquires the smaller one; the shareholders of the smaller one receive
  compensation. See Compensation.

  A hotel of 11 tiles or more is safe against acquisitions. It becomes
  illegal to place tiles such that the hotel is merged with another hotel. 

  When a hotel grows to 42 tiles or more, the game is over. 

* Naturally, a player may also place tiles that do not connect to any
  occupied tiles on the board.

  After placing a tile, a player may buy up to 3 shares in hotel chains
  that occupy space on the board, assuming the player has a sufficient
  amount of money. 

  Finally, the player receives a tile to replace the one that was placed. 

 Hotels: 
 ------
 Seven hotel labels are initially available: 
 American, Continental, Festival, Imperial, Sackson, Tower, Worldwide. 

 Shares:
 -------
 The price of a share in a hotel depends on the size of the hotel. 

 Money: 
 ------
 A player receives a limited amount of money at the beginning of the game
 and as a result of mergers. The latter amount depends on the size of the
 hotel and the status of a player as an owner. 

 Resource administration: 
 ------------------------
 A banker administrates the central resources. 


   THE KNOWLEDGE
;; =============================================================================

 SHARED KNOWLEDGE (meaning of information) is expressed in terms of 
 rows, columns, cells, tiles, 
 hotel labels, which represent hotels and shares,
 and share collections

 A GAME FRAMEWORK must know and track: 
  the board
  the banker 
  -- the available hotels 
  -- the available stock
  the available tiles 
  each players' belongings: 
  -- tiles owned
  -- cash owned 
 The above is the internal state of the game framework: 
  the board is so large it must be separated out, and
  everything else can go into one module. 

 A PLAYER knows
  the board 
  the banker 
  cashed owned 
  shares owned 

;; -----------------------------------------------------------------------------
  ideas: 

 for a turn: 
   [1] server sends current board, available stock, and available hotels to active player 
   player decides which tile to place, whether to form a hotel, and which stocks to buy 
   [2] active player responds with tile, request for stock, and optional hotel request
   server updates board, places hotel (if requested and legal), and ensures legality of
   stock request server draws tile

NEXT: deal with merger here 

   [3] server sends new tile to active player 
   [4] server broadcasts stock purchase to all other players 

 alternative design, saves one message: 
   [1] server sends entire game state (minus player's tiles) to the active player 
   [2] active player responds with tile, request for up to three stock, and optional hotel request
   [3] server sends new tile to active player 

 Messages: 
   from server to client: 
    [a] [turn [Listof [List Hotel Nat]] [Listof [List Tile Hotel]]]
    [b] [tile Tile]
    [b] [stock Player [Listof Stock]] where the list contains at most three elements 
   from client to server: 
    [action Tile [optional Hotel] [Listof Stock]] where the list contains at most three elements 
|#

 Questions: 
 ---------

  1. Does player know the shares that the other players own?

  2. Can a player found a hotel when he adds a tile to an "unoccupied" block of
  tiles of arbitrary size? 

  Ryan: I actually don't think the solution on the blog works.  What
  happens in this situation, is we grow the company with the tile we just
  placed, but leave the unassociated tile alone.  Then if I try to place a
  tile next to the unassociated tile, we found a Hotel. Now we have 2
  hotels next to each other.  Normally this condition affects a merge. But
  what about the case where the other hotel is safe. Then a merger cannot
  happen.

  3. If a tile is placed so that more than two hotels are merged, how is
  the merger event executed?
  
  Example: 

   Suppose the board looks like this where * and + and % are hotel chains. 

	    ***
	      *    ++++
	      *?++++
	       %
	       %
	       %%%%

   The cell marked with '?' is free. When a player places a tile there, how
   are the three hotels merged? It is easy to imagine a similar four-way 
   merger. 

   How often can such n > 2 mergers happen? 

  4. What happens to shares when hotels are acquired? 
  (unspecified currently, need to decided -> Sarah and Deanna) 

  5. What happens when a player can't place any tile? 
