getSolution :: AkariInst -> Map String CW -> String
getSolution inst m = 
  let
    width = length (head inst)
    height = length inst
  in
    concat $ map (++ "\n") $ map concat $
    map (\i ->
        map (\j ->
            if (fromCW $ m ! (show i ++ "-" ++ show j) :: Bool) then
                "+" -- light bulb
            else
                case ((inst !! i) !! j) of (_, Just i) -> show i
                                           (Space, Nothing) -> " "
                                           (Wall, Nothing) -> "#"
        ) [0..width-1]
    ) [0..height-1]
getSolution :: AkariInst -> Map String CW -> String
getSolution inst m = 
  let
    width = length (head inst)
    height = length inst
  in
    concat $ map (++ "\n") $ map concat $
    map (\i ->
        map (\j ->
            if (fromCW $ m ! (show i ++ "-" ++ show j) :: Bool) then
                "+" -- light bulb
            else
                case ((inst !! i) !! j) of (_, Just i) -> show i
                                           (Space, Nothing) -> " "
                                           (Wall, Nothing) -> "#"
        ) [0..width-1]
    ) [0..height-1]
getSolution inst m = 
  let
    width = length (head inst)
    height = length inst
  in
    concat $ map (++ "\n") $ map concat $
    map (\i ->
        map (\j ->
            if (fromCW $ m ! (show i ++ "-" ++ show j) :: Bool) then
                "+" -- light bulb
            else
                case ((inst !! i) !! j) of (_, Just i) -> show i
                                           (Space, Nothing) -> " "
                                           (Wall, Nothing) -> "#"
        ) [0..width-1]
    ) [0..height-1]