[Haskell-beginners] A good data structure for representing a tic-tac-toe board?

Peter Hall peter.hall at memorphic.com
Tue Mar 19 13:32:21 CET 2013


Ah yes, that is nicer! I got too used to the limitations of the other
languages I use :)

Peter


On 19 March 2013 03:16, Lyndon Maydwell <maydwell at gmail.com> wrote:

> If taking the array approach, I'd recommend using a single array indexed
> by the (x,y) position of the cell, this way neither direction has a greater
> implied significance. Diagonals should also be easier.
>
> Aside: Tony Morris wrote a very interesting exercise based on tic-tac-toe
> and it is available on Hackage:
> http://hackage.haskell.org/package/TicTacToe
>
>
> On Tue, Mar 19, 2013 at 3:49 AM, Peter Hall <peter.hall at memorphic.com>wrote:
>
>> Start with a data type for the cell values, instead of Char. Then use an
>> Array of Arrays, containing those values.
>>
>> data Cell = Empty | O | X
>> type Board = Array Int Cell
>>
>> Finding winning "rows" and "columns" is easy. Diagonals are slightly more
>> complicated.
>>
>> Peter
>>
>>
>>
>> On 18 March 2013 15:54, Costello, Roger L. <costello at mitre.org> wrote:
>>
>>> Hi Folks,
>>>
>>> Currently I am representing a tic-tac-toe board as a string, with 'X'
>>> denoting player 1 and 'O' denoting player 2. For example, I represent this
>>> 2x2 game board:
>>>
>>>      'X'        |
>>> -----------------------
>>>         |   'O'
>>>
>>> with this string: "X  O"
>>>
>>> The nice thing about that representation is that it is each to identify
>>> which cells are filled or empty, and it is easy to mark a cell with an 'X'
>>> or 'O'.
>>>
>>> The problem with the representation is that it is difficult to determine
>>> when a player has won.
>>>
>>> Can you recommend a representation that makes it easy to:
>>>
>>> 1. determine when a player has won
>>> 2. identify cells that are filled or empty
>>> 3. mark an empty cell
>>>
>>> /Roger
>>>
>>> _______________________________________________
>>> Beginners mailing list
>>> Beginners at haskell.org
>>> http://www.haskell.org/mailman/listinfo/beginners
>>>
>>
>>
>> _______________________________________________
>> Beginners mailing list
>> Beginners at haskell.org
>> http://www.haskell.org/mailman/listinfo/beginners
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/beginners/attachments/20130319/c6500a08/attachment.htm>


More information about the Beginners mailing list