fork download
  1. import Data.List
  2.  
  3. key :: Char
  4. key = '#'
  5.  
  6. blank :: Char
  7. blank = ' '
  8.  
  9. newLine_ :: String -> String
  10. newLine_ [] = []
  11. newLine_ (_:[]) = []
  12. newLine_ (_:_:[]) = []
  13. newLine_ list@(left:up:right:rest)
  14. | (oneKey && oneBlank) && up == blank = key : (newLine_ $ drop 1 list)
  15. | otherwise = blank : (newLine_ $ drop 1 list)
  16. where
  17. oneKey = left == key || right == key
  18. oneBlank = left == blank || right == blank
  19.  
  20. newLine :: String -> String
  21. newLine x = blank : ((newLine_ x) ++ [blank])
  22.  
  23. sier :: String -> Int -> [String]
  24. sier _ lines
  25. | lines < 1 = []
  26. sier [] lines = sier firstLine lines
  27. where
  28. spacing = replicate lines blank
  29. firstLine = spacing ++ [key] ++ spacing
  30. sier prevLine lines = prevLine : (sier next (lines-1))
  31. where next = newLine prevLine
  32.  
  33. main :: IO ()
  34. main = putStr $ intercalate "\n" $ sier [] (2^5)
Success #stdin #stdout 0s 4644KB
stdin
Standard input is empty
stdout
                                #                                
                               # #                               
                              #   #                              
                             # # # #                             
                            #       #                            
                           # #     # #                           
                          #   #   #   #                          
                         # # # # # # # #                         
                        #               #                        
                       # #             # #                       
                      #   #           #   #                      
                     # # # #         # # # #                     
                    #       #       #       #                    
                   # #     # #     # #     # #                   
                  #   #   #   #   #   #   #   #                  
                 # # # # # # # # # # # # # # # #                 
                #                               #                
               # #                             # #               
              #   #                           #   #              
             # # # #                         # # # #             
            #       #                       #       #            
           # #     # #                     # #     # #           
          #   #   #   #                   #   #   #   #          
         # # # # # # # #                 # # # # # # # #         
        #               #               #               #        
       # #             # #             # #             # #       
      #   #           #   #           #   #           #   #      
     # # # #         # # # #         # # # #         # # # #     
    #       #       #       #       #       #       #       #    
   # #     # #     # #     # #     # #     # #     # #     # #   
  #   #   #   #   #   #   #   #   #   #   #   #   #   #   #   #  
 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #