diff options
author | William Carroll <wpcarro@gmail.com> | 2020-08-18T11·13+0100 |
---|---|---|
committer | William Carroll <wpcarro@gmail.com> | 2020-08-20T10·26+0100 |
commit | 33890d8a8b0366f078f359a9e7ad63da24634b9a (patch) | |
tree | accfa36ce342cd39ad0d1af5ad60b7cf8051b849 /scratch/brilliant/Keyboard.hs | |
parent | 0c71fc9d1d49daa914c0f56f4f9201d40415d9b4 (diff) |
Move scratch/brilliant into //assessments
Where it belongs...
Diffstat (limited to 'scratch/brilliant/Keyboard.hs')
-rw-r--r-- | scratch/brilliant/Keyboard.hs | 58 |
1 files changed, 0 insertions, 58 deletions
diff --git a/scratch/brilliant/Keyboard.hs b/scratch/brilliant/Keyboard.hs deleted file mode 100644 index 13b5de0145aa..000000000000 --- a/scratch/brilliant/Keyboard.hs +++ /dev/null @@ -1,58 +0,0 @@ -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} --------------------------------------------------------------------------------- -module Keyboard where --------------------------------------------------------------------------------- -import Utils -import Data.Coerce -import Data.Hashable (Hashable) -import GHC.Generics (Generic) - -import qualified Data.List as List -import qualified Data.HashMap.Strict as HM --------------------------------------------------------------------------------- - -newtype Keyboard = Keyboard [[Char]] - deriving (Eq) - -instance Show Keyboard where - show (Keyboard xxs) = - xxs |> fmap printRow |> List.intercalate "\n" - where - printRow :: [Char] -> String - printRow xs = - xs |> fmap (\x -> '[':x:']':"") |> List.intercalate "" - -data Coord = Coord - { row :: Int - , col :: Int - } deriving (Eq, Show, Generic) - -instance Hashable Coord - --- | List of characters to their QWERTY coordinatees. -coords :: [(Char, Coord)] -coords = - qwerty - |> coerce - |> fmap (zip [0..]) - |> zip [0..] - |> fmap (\(row, xs) -> xs |> fmap (\(col, char) -> (char, Coord row col))) - |> mconcat - --- | Mapping of characters to their coordinates on a QWERTY keyboard with the --- top-left corner as 0,0. -charToCoord :: HM.HashMap Char Coord -charToCoord = HM.fromList coords - -coordToChar :: Keyboard -> Coord -> Maybe Char -coordToChar (Keyboard xxs) Coord{..} = - Just $ xxs !! row !! col - -qwerty :: Keyboard -qwerty = Keyboard [ ['1','2','3','4','5','6','7','8','9','0'] - , ['Q','W','E','R','T','Y','U','I','O','P'] - , ['A','S','D','F','G','H','J','K','L',';'] - , ['Z','X','C','V','B','N','M',',','.','/'] - ] |