Generate coords function from existing qwerty keyboard
Per my take-home assignment's reviewer's comments, with which for the record I agree, I should generate the character->coordinate table from my existing qwerty keyboard definition. The best part is: by doing this I found a bug: Notice how the original '0' character was mapped to the Coordinate (0,0)... thus every subsequent digit key (i.e. the first row) is off-by-one.
This commit is contained in:
		
							parent
							
								
									4ff1ea291c
								
							
						
					
					
						commit
						17e1764ef8
					
				
					 1 changed files with 8 additions and 44 deletions
				
			
		|  | @ -5,6 +5,7 @@ | ||||||
| module Keyboard where | module Keyboard where | ||||||
| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ||||||
| import Utils | import Utils | ||||||
|  | import Data.Coerce | ||||||
| import Data.Hashable (Hashable) | import Data.Hashable (Hashable) | ||||||
| import GHC.Generics (Generic) | import GHC.Generics (Generic) | ||||||
| 
 | 
 | ||||||
|  | @ -32,50 +33,13 @@ instance Hashable Coord | ||||||
| 
 | 
 | ||||||
| -- | List of characters to their QWERTY coordinatees. | -- | List of characters to their QWERTY coordinatees. | ||||||
| coords :: [(Char, Coord)] | coords :: [(Char, Coord)] | ||||||
| coords = [ ('0', Coord { row = 0, col = 0 }) | coords = | ||||||
|          , ('1', Coord { row = 0, col = 1 }) |   qwerty | ||||||
|          , ('2', Coord { row = 0, col = 2 }) |   |> coerce | ||||||
|          , ('3', Coord { row = 0, col = 3 }) |   |> fmap (zip [0..]) | ||||||
|          , ('4', Coord { row = 0, col = 4 }) |   |> zip [0..] | ||||||
|          , ('5', Coord { row = 0, col = 5 }) |   |> fmap (\(row, xs) -> xs |> fmap (\(col, char) -> (char, Coord row col))) | ||||||
|          , ('6', Coord { row = 0, col = 6 }) |   |> mconcat | ||||||
|          , ('7', Coord { row = 0, col = 7 }) |  | ||||||
|          , ('8', Coord { row = 0, col = 8 }) |  | ||||||
|          , ('9', Coord { row = 0, col = 9 }) |  | ||||||
|          -- second row |  | ||||||
|          , ('Q', Coord { row = 1, col = 0 }) |  | ||||||
|          , ('W', Coord { row = 1, col = 1 }) |  | ||||||
|          , ('E', Coord { row = 1, col = 2 }) |  | ||||||
|          , ('R', Coord { row = 1, col = 3 }) |  | ||||||
|          , ('T', Coord { row = 1, col = 4 }) |  | ||||||
|          , ('Y', Coord { row = 1, col = 5 }) |  | ||||||
|          , ('U', Coord { row = 1, col = 6 }) |  | ||||||
|          , ('I', Coord { row = 1, col = 7 }) |  | ||||||
|          , ('O', Coord { row = 1, col = 8 }) |  | ||||||
|          , ('P', Coord { row = 1, col = 9 }) |  | ||||||
|          -- third row |  | ||||||
|          , ('A', Coord { row = 2, col = 0 }) |  | ||||||
|          , ('S', Coord { row = 2, col = 1 }) |  | ||||||
|          , ('D', Coord { row = 2, col = 2 }) |  | ||||||
|          , ('F', Coord { row = 2, col = 3 }) |  | ||||||
|          , ('G', Coord { row = 2, col = 4 }) |  | ||||||
|          , ('H', Coord { row = 2, col = 5 }) |  | ||||||
|          , ('J', Coord { row = 2, col = 6 }) |  | ||||||
|          , ('K', Coord { row = 2, col = 7 }) |  | ||||||
|          , ('L', Coord { row = 2, col = 8 }) |  | ||||||
|          , (';', Coord { row = 2, col = 9 }) |  | ||||||
|          -- fourth row |  | ||||||
|          , ('Z', Coord { row = 3, col = 0 }) |  | ||||||
|          , ('X', Coord { row = 3, col = 1 }) |  | ||||||
|          , ('C', Coord { row = 3, col = 2 }) |  | ||||||
|          , ('V', Coord { row = 3, col = 3 }) |  | ||||||
|          , ('B', Coord { row = 3, col = 4 }) |  | ||||||
|          , ('N', Coord { row = 3, col = 5 }) |  | ||||||
|          , ('M', Coord { row = 3, col = 6 }) |  | ||||||
|          , (',', Coord { row = 3, col = 7 }) |  | ||||||
|          , ('.', Coord { row = 3, col = 8 }) |  | ||||||
|          , ('/', Coord { row = 3, col = 9 }) |  | ||||||
|          ] |  | ||||||
| 
 | 
 | ||||||
| -- | Mapping of characters to their coordinates on a QWERTY keyboard with the | -- | Mapping of characters to their coordinates on a QWERTY keyboard with the | ||||||
| -- top-left corner as 0,0. | -- top-left corner as 0,0. | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue