实验要求
module MyPicture where
import Data.Char
import Data.List
type Picture = [String]
---------------------------------------------------
say :: String -> String
--say的定义
sayit :: String -> IO ()
putIn :: Char -> Picture
sideByside :: Picture -> Picture -> Picture
myconnect :: String -> Int -> Picture
mybreak :: [String] -> String
---------------------------------------------------
sayit = putStr.say
say str = mybreak $ myconnect str (length(str) - 1)
mybreak [] = []
mybreak (x:xs) = x ++ "\n" ++ mybreak xs
sideByside [] qs = []
sideByside ps [] = []
sideByside (p:ps) (q:qs) = (p ++ " " ++ q) : sideByside ps qs
myconnect str n
| n == 1 = sideByside (putIn (str !! 0)) (putIn (str !! 1))
| n > 0 = sideByside (myconnect str (n-1)) (putIn (str !! n))
putIn mychar
| mychar == 'A' || mychar == 'a' = (lA)
| mychar == 'B' || mychar == 'b' = (lB)
| mychar == 'C' || mychar == 'c' = (lC)
| mychar == 'D' || mychar == 'd' = (lD)
| mychar == 'E' || mychar == 'e' = (lE)
| mychar == 'F' || mychar == 'f' = (lF)
| mychar == 'G' || mychar == 'g' = (lG)
| mychar == 'H' || mychar == 'h' = (lH)
| mychar == 'I' || mychar == 'i' = (lI)
| mychar == 'J' || mychar == 'j' = (lJ)
| mychar == 'K' || mychar == 'k' = (lK)
| mychar == 'L' || mychar == 'l' = (lL)
| mychar == 'M' || mychar == 'm' = (lM)
| mychar == 'N' || mychar == 'n' = (lN)
| mychar == 'O' || mychar == 'o' = (lO)
| mychar == 'P' || mychar == 'p' = (lP)
| mychar == 'Q' || mychar == 'q' = (lQ)
| mychar == 'R' || mychar == 'r' = (lR)
| mychar == 'S' || mychar == 's' = (lS)
| mychar == 'T' || mychar == 't' = (lT)
| mychar == 'U' || mychar == 'u' = (lU)
| mychar == 'V' || mychar == 'v' = (lV)
| mychar == 'W' || mychar == 'w' = (lW)
| mychar == 'X' || mychar == 'x' = (lX)
| mychar == 'Y' || mychar == 'y' = (lY)
| mychar == 'Z' || mychar == 'z' = (lZ)
| mychar == '0' = (d0)
| mychar == '1' = (d1)
| mychar == '2' = (d2)
| mychar == '3' = (d3)
| mychar == '4' = (d4)
| mychar == '5' = (d5)
| mychar == '6' = (d6)
| mychar == '7' = (d7)
| mychar == '8' = (d8)
| mychar == '9' = (d9)
| otherwise = lBlank
where
lA = [" A ",
" A A ",
"A A",
"AAAAA",
"A A"]
lB = ["BBBBB",
"B B ",
"BBBBB",
"B B ",
"BBBBB"]
lC = [" CCCC",
"C ",
"C ",
"C ",
" CCCC"]
lD = ["DDDD ",
"D D",
"D D",
"D D",
"DDDD "]
lE = ["EEEEE",
"E ",
"EEEEE",
"E ",
"EEEEE"]
lF = ["FFFFF",
"F ",
"FFFFF",
"F ",
"F "]
lG = [" GGGG",
"G ",
"G ",
"G G",
" GGGG"]
lH = ["H H",
"H H",
"HHHHH",
"H H",
"H H"]
lI = [" III ",
" I ",
" I ",
" I ",
" III "]
lJ = [" JJJ ",
" J ",
" J ",
"J J ",
" JJ "]
lK = ["K K ",
"K K ",
"KK ",
"K K ",
"K KK"]
lL = ["L ",
"L ",
"L ",
"L ",
"LLLLL"]
lM = ["M M",
"MM MM",
"M M M",
"M M M",
"M M"]
lN = ["N N",
"NN N",
"N N N",
"N NN",
"N N"]
lO = [" OOO ",
"O O",
"O O",
"O O",
" OOO "]
lP = ["PPPP ",
"P P",
"PPPP ",
"P ",
"P "]
lQ = [" QQQ ",
"Q Q",
"Q Q Q",
"Q QQ",
" QQQ "]
lR = ["RRRR ",
"R R",
"RRRR ",
"R R ",
"R R"]
lS = ["SSSSS",
"S ",
"SSSSS",
" S",
"SSSSS"]
lT = ["TTTTT",
" T ",
" T ",
" T ",
" T "]
lU = ["U U",
"U U",
"U U",
"U U",
" UUU "]
lV = ["V V",
"V V",
"V V",
" V V ",
" V "]
lW = ["W W W",
"W W W",
"W W W",
" W W ",
" W W "]
lX = ["X X",
" X X ",
" X ",
" X X ",
"X X"]
lY = ["Y Y",
" Y Y ",
" Y ",
" Y ",
" Y "]
lZ = ["ZZZZZ",
" Z ",
" Z ",
" Z ",
"ZZZZZ"]
d0 = [" 000 ",
"0 0",
"0 0",
"0 0",
" 000 "]
d1 = [" 1 ",
" 1 ",
" 1 ",
" 1 ",
" 1 "]
d2 = [" 222 ",
"2 2",
" 2 ",
" 2 ",
"22222"]
d3 = ["3333 ",
" 3",
" 333 ",
" 3",
"3333 "]
d4 = ["4 4",
"4 4",
"44444",
" 4",
" 4"]
d5 = ["55555",
"5 ",
"55555",
" 5",
"55555"]
d6 = ["66666",
"6 ",
"66666",
"6 6",
"66666"]
d7 = ["77777",
" 7",
" 7",
" 7",
" 7"]
d8 = ["88888",
"8 8",
"88888",
"8 8",
"88888"]
d9 = ["99999",
"9 9",
"99999",
" 9",
"99999"]
lBlank =
[" ",
" ",
" ",
" ",
" "]
未经允许不得转载:MikuAlpha's Blog » 设计一个放大字符串的程序–Haskell实验2-2