Haskell之字符串放大

--放大字符串
type Picture = [String]


--打印出picture
printPic :: Picture -> IO ()
printPic pic = putStr (unlines pic)


--map每一个字符,把字符对应成picture
putLetter :: Char -> Picture
putLetter s
         | s == 'A' || s == 'a'  =  (lA)
         | s == 'B' || s == 'b'  =  (lB)
         | s == 'C' || s == 'c'  =  (lC)
         | s == 'D' || s == 'd'  =  (lD)
         | s == 'E' || s == 'e'  =  (lE)
         | s == 'F' || s == 'f'  =  (lF)
         | s == 'G' || s == 'g'  =  (lG)
         | s == 'H' || s == 'h'  =  (lH)
         | s == 'I' || s == 'i'  =  (lI)
         | s == 'J' || s == 'j'  =  (lJ)
         | s == 'K' || s == 'k'  =  (lK)
         | s == 'L' || s == 'l'  =  (lL)
         | s == 'M' || s == 'm'  =  (lM)
         | s == 'N' || s == 'n'  =  (lN)
         | s == 'O' || s == 'o'  =  (lO)
         | s == 'P' || s == 'p'  =  (lP)
         | s == 'Q' || s == 'q'  =  (lQ)
         | s == 'R' || s == 'r'  =  (lR)
         | s == 'S' || s == 's'  =  (lS)
         | s == 'T' || s == 't'  =  (lT)
         | s == 'U' || s == 'u'  =  (lU)
         | s == 'V' || s == 'v'  =  (lV)
         | s == 'W' || s == 'w'  =  (lW)
         | s == 'X' || s == 'x'  =  (lX)
         | s == 'Y' || s == 'y'  =  (lY)
         | s == 'Z' || s == 'z'  =  (lZ)
         | s == '0'              =  (d0)
         | s == '1'              =  (d1)
         | s == '2'              =  (d2)
         | s == '3'              =  (d3)
         | s == '4'              =  (d4)
         | s == '5'              =  (d5)
         | s == '6'              =  (d6)
         | s == '7'              =  (d7)
         | s == '8'              =  (d8)
         | s == '9'              =  (d9)
         | otherwise             = lBlank


--将两个picture连成一个
sideByside  :: Picture -> Picture -> Picture
sideByside [] qs = []
sideByside ps [] = [] 
sideByside (p:ps)  (q:qs) = (p++q) : sideByside ps qs


--将一个字符串的对应的每一个picture连接起来
connectL :: String -> Int -> Picture
connectL    str n
          | n == 1  = sideByside (putLetter (str!!0)) (putLetter (str!!1))
          | n > 0   = sideByside (connectL str (n-1)) (putLetter (str!!n))


--打印出每个字符串的放大的picture
sayit :: String -> IO()
sayit    str = printPic (connectL str (length(str)-1))


lA = ["     A      ", 
      "    A A     ",
      "   A   A    ",
      "  A     A   ",
      " AAAAAAAAA  ",
      "A         A "]


lB = ["BBBBBBBBBBB ", 
      "BB        B ",
      "BBBBBBBBBB  ",
      "BBBBBBBBBB  ",
      "BB        B ",
      "BBBBBBBBBBB "]


lC = [" CCCCCCCCC ", 
      "C          ",
      "C          ",
      "C          ",
      "C          ",
      " CCCCCCCCC "]


lD = ["DDDDDDDDD   ", 
      "D        D  ",
      "D         D ",
      "D         D ",
      "D        D  ",
      "DDDDDDDDD   "]


lE = ["EEEEEEEEEE ", 
      "E          ",
      "EEEEEEEEEE ",
      "EEEEEEEEEE ",
      "E          ",
      "EEEEEEEEEE "]


lF = ["FFFFFFFFFF ", 
      "F          ",
      "FFFFFFFFFF ",
      "F          ",
      "F          ",
      "F          "]


lG = [" GGGGGGGGGG ", 
      "G           ",
      "G           ",
      "G         G ",
      "G        GG ",
      " GGGGGGGG G "]


lH = ["H       H ", 
      "H       H ",
      "HHHHHHHHH ",
      "HHHHHHHHH ",
      "H       H ",
      "H       H "]


lI = ["  IIII ", 
      "   II  ",
      "   II  ",
      "   II  ",
      "   II  ",
      "  IIII "]


lJ = ["    JJJJ   ", 
      "     JJ    ",
      "     JJ    ",
      "     JJ    ",
      "   J JJ    ",
      "    JJJ    "]


lK = ["    K  KKK ", 
      "    K KK   ",
      "    KKK    ",
      "    KKK    ",
      "    K KK   ",
      "    K  KKK "]


lL = ["LL         ", 
      "LL         ",
      "LL         ",
      "LL         ",
      "LL         ",
      "LLLLLLLLL  "]


lM = ["MMMM   MMMM ", 
      "M  M   M  M ",
      "M  M   M  M ",
      "M  M   M  M ",
      "M  M   M  M ",
      "M  MMMMM  M "]


lN = ["NN     N ", 
      "N N    N ",
      "N  N   N ",
      "N   N  N ",
      "N    N N ",
      "N     NN "]


lO = [" OOOOOOOOOO  ", 
      "O          O ",
      "O          O ",
      "O          O ",
      "O          O ",
      " OOOOOOOOOO  "]


lP = ["PPPPPPPPP   ", 
      "P        P  ",
      "P        P  ",
      "PPPPPPPPP   ",
      "P           ",
      "P           "]


lQ = [" OOOOOOOOOO  ", 
      "O          O ",
      "O          O ",
      "O       OO O ",
      "O        OOO ",
      " OOOOOOOOO   "]


lR = ["RRRRRRRRR   ", 
      "R        R  ",
      "RRRRRRRRR   ",
      "RR          ",
      "R R         ",
      "R  RRRRRRR  "]


lS = [" SSSSSSSSS  ", 
      "S           ",
      "SSSSSSSSSS  ",
      "SSSSSSSSSSS ",
      "           S",
      "SSSSSSSSSSS "]


lT = ["TTTTTTTT  ", 
      "   TT     ",
      "   TT     ",
      "   TT     ",
      "   TT     ",
      "   TT     "]


lU = ["U         U ", 
      "U         U ",
      "U         U ",
      "U         U ",
      "U         U ",
      " UUUUUUUUU  "]


lV = ["V         V  ", 
      " V       V   ",
      "  V     V    ",
      "   V   V     ",
      "    V V      ",
      "     V       "]


lW = ["W     W     W ", 
      "W     W     W ",
      " W   W W   W  ",
      "  W W   W W   ",
      "   W     W    ",
      "   W     W    "]


lX = ["XXXXX   XXXXX ", 
      "     X X      ",
      "      X       ",
      "       X      ",
      "      X X     ",
      "XXXXXX   XXXX "]


lY = ["Y           Y ", 
      " YY       YY  ",
      "   YYYYYYY    ",
      "      Y       ",
      "      Y       ",
      "      Y       "]


lZ = ["ZZZZZZZZZZZZZ ", 
      "          ZZ  ",
      "        ZZZ   ",
      "   ZZZZZ      ",
      " ZZZ          ",
      "ZZZZZZZZZZZZZ "]


d0 = ["   000  ", 
      "  0   0 ",
      "  0   0 ",
      "  0   0 ",
      "  0   0 ",
      "   000  "]


d1 = ["   11   ", 
      "   11   ",
      "   11   ",
      "   11   ",
      "   11   ",
      "   11   "]


d2 = [" 2222222", 
      "2      2",
      "      2 ",
      "     2  ",
      "   22   ",
      "22222222"]


d3 = [" 3333333", 
      "3     3 ",
      "     3  ",
      "    33  ",
      " 3    33",
      " 3333333"]


d4 = ["4      4", 
      "4      4",
      "44444444",
      "       4",
      "       4",
      "       4"]


d5 = ["55555555 ", 
      "5        ",
      "5555555  ",
      " 5555555 ",
      "       5 ",
      "55555555 "]


d6 = ["66666666 ", 
      "6        ",
      "66666666 ",
      "6      6 ",
      "6      6 ",
      "66666666 "]


d7 = ["77777777 ", 
      "       7 ",
      "       7 ",
      "       7 ",
      "       7 ",
      "       7 "]


d8 = [" 888888  ", 
      "8      8 ",
      "88888888 ",
      "88888888 ",
      "8      8 ",
      " 888888  "]


d9 = [" 999999  ", 
      "9      9 ",
      "9      9 ",
      "99999999 ",
      "       9 ",
      "99999999 "]


lBlank = ["   ", 
      "   ",
      "   ",
      "   ",
      "   ",
      "   "]

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值