--放大字符串
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 = [" ",
" ",
" ",
" ",
" ",
" "]