Haskell作業2(2)|放大字符串

module MyPicture where
import Data.Char
import Data.List

a1 = ["  A    "," A A   ","A   A  ","AAAAA  ","A   A  "]
b1 = ["BBBB   ","B   B  ","BBBB   ","B   B  ","BBBB   "]
c1 = [" CCCC  ","C      ","C      ","C      "," CCCC  "]
d1 = ["DDD    ","D  D   ","D   D  ","D  D   ","DDD    "]
e1 = ["EEEEE  ","E      ","EEEEE  ","E      ","EEEEE  "]
f1 = ["FFFFF  ","F      ","FFFF   ","F      ","F      "]
g1 = [" GGGG  ","G      ","G  GG  ","G   G  "," GGG   "]
h1 = ["H   H  ","H   H  ","HHHHH  ","H   H  ","H   H  "]
i1 = ["IIIII  ","  I    ","  I    ","  I    ","IIIII  "]
j1 = [" JJJJ  ","   J   ","   J   ","J  J   "," JJ    "]
k1 = ["K  KK  ","K K    ","KK     ","K K    ","K  KK  "]
l1 = ["L      ","L      ","L      ","L      ","LLLLL  "]
m1 = ["M   M  ","MM MM  ","M M M  ","M M M  ","M M M  "]
n1 = ["N   N  ","NN  N  ","N N N  ","N  NN  ","N   N  "]
o1 = [" OOO   ","O   O  ","O   O  ","O   O  "," OOO   "]
p1 = ["PPPP   ","P   P  ","PPPP   ","P      ","P      "]
q1 = [" QQQ   ","Q   Q  ","Q   Q  ","Q  Q   "," QQ Q  "]
r1 = ["RRRR   ","R   R  ","RR R   ","R R    ","R  RR  "]
s1 = [" SSSS  ","S      ","SSSSS  ","    S  ","SSSS   "]
t1 = ["TTTTT  ","  T    ","  T    ","  T    ","  T    "]
u1 = ["U   U  ","U   U  ","U   U  ","U   U  ","UUUUU  "]
v1 = ["V   V  ","V   V  ","V   V  "," V V   ","  V    "]
w1 = ["W   W  ","W W W  ","W W W  ","W W W  "," W W   "]
x1 = ["X   X  "," X X   ","  X    "," X X   ","X   X  "]
y1 = ["Y   Y  "," Y Y   ","  Y    ","  Y    ","  Y    "]
z1 = ["ZZZZZ  ","   Z   ","  Z    "," Z     ","ZZZZZ  "]

l0 = [" 000   ","00  0  ","0 0 0  ","0  00  "," 000   "]
ll = ["  1    "," 11    ","  1    ","  1    ","11111  "]--ll(charater l) not l1(one)
l2 = [" 222   ","2   2  ","   2   ","  2    ","22222  "]
l3 = ["3333   ","    3  "," 333   ","    3  ","3333   "]
l4 = ["   4   ","  44   "," 4 4   ","44444  ","   4   "]
l5 = ["55555  ","5      ","55555  ","    5  ","55555  "]
l6 = ["66666  ","6      ","66666  ","6   6  ","66666  "]
l7 = ["77777  ","   7   ","  7    ","  7    ","  7    "]
l8 = ["88888  ","8   8  ","88888  ","8   8  ","88888  "]
l9 = ["99999  ","9   9  ","99999  ","    9  ","99999  "]

blank = ["   ","   ","   ","   ","   "]

enlarge :: Char -> [String]
enlarge c
	|c == 'A' || c == 'a' = a1
	|c == 'B' || c == 'b' = b1
	|c == 'C' || c == 'c' = c1
	|c == 'D' || c == 'd' = d1
	|c == 'E' || c == 'e' = e1
	|c == 'F' || c == 'f' = f1
	|c == 'G' || c == 'g' = g1
	|c == 'H' || c == 'h' = h1
	|c == 'I' || c == 'i' = i1
	|c == 'J' || c == 'j' = j1
	|c == 'K' || c == 'k' = k1
	|c == 'L' || c == 'l' = l1
	|c == 'M' || c == 'm' = m1
	|c == 'N' || c == 'n' = n1
	|c == 'O' || c == 'o' = o1
	|c == 'P' || c == 'p' = p1
	|c == 'Q' || c == 'q' = q1
	|c == 'R' || c == 'r' = r1
	|c == 'S' || c == 's' = s1
	|c == 'T' || c == 't' = t1
	|c == 'U' || c == 'u' = u1
	|c == 'V' || c == 'v' = v1
	|c == 'W' || c == 'w' = w1
	|c == 'X' || c == 'x' = x1
	|c == 'Y' || c == 'y' = y1
	|c == 'Z' || c == 'z' = z1
	|c == '0' = l0
	|c == '1' = ll
	|c == '2' = l2
	|c == '3' = l3
	|c == '4' = l4
	|c == '5' = l5
	|c == '6' = l6
	|c == '7' = l7
	|c == '8' = l8
	|c == '9' = l9
	|c == ' ' = blank
	|otherwise = error "Out of A-Z,a-z and 0-9"


sideByside :: [String] -> [String] -> [String]
sideByside pic1 pic2 = [ x ++ y  | (x,y) <- zip pic1 pic2]	
	
formNewStr :: String -> Int -> [String]
formNewStr str1 n--can be replaced by foldr
	|n == 1    = sideByside (enlarge (str1!!0)) (enlarge (str1!!1))
	|n == -1 = error "No input" -- sayit ""
	|otherwise = sideByside (formNewStr str1 (n-1)) (enlarge (str1!!n))

say :: String -> String
say str1 = unlines ( formNewStr str1 (length str1 -1) )

sayit :: String -> IO ()
sayit str1 = putStr ( say str1 )
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章