Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
Lahendada krüptoaritmeetiline ülesanne: yks yks +kolm ----- viis Tuleb leida toodud ülesande kõikvõimalikud lahendused. Iga lahendus on kujul [i,k,l,m,o,s,v,y] ; so. täisarvude list, mille esimesene element vastab tähele i, teine tähele k jne. Iga täht tähistab erinevat numbrit ning sõnade esimesed tähed (so. y, k ja v) ei tohi olla nullid. Allpool on toodud mooduli skelett ja lahendite väljatrükkimiseks vajalikud funktsioonid. > module Puzzle where Lahendite väljatrükkimiseks kasutame loengus toodud moodulit 'Pictures': > import Pictures Funktsioon printAll saab argumendiks lahendite listi ja trükib need kõik välja: > printAll :: [[Int]] -> IO() > printAll = printPicture . block 8 . map sol2Pic Funktsioon printFst saab argumendiks lahendite listi ja trükib välja kõige esimese: > printFst :: [[Int]] -> IO() > printFst = printPicture . sol2Pic . head Funktsioon sol2Pic teisendab ühe lahenduse pildiks: > sol2Pic :: [Int] -> Picture > sol2Pic [i,k,l,m,o,s,v,y] > = lframe (6,6) ([oneS,oneS,threeS,lineS,fiveS]) > where oneS = " " ++ show (digits2int [y,k,s]) > threeS = "+" ++ show (digits2int [k,o,l,m]) > fiveS = " " ++ show (digits2int [v,i,i,s]) > lineS = "-----" Funktsioon digits2int teisendab numbrite listi vastavaks täisarvuks. Näiteks: digits2int [1,2,3] ==> 123 > digits2int :: [Int] -> Int > digits2int = foldl (\ a i -> 10*a+i) 0 solve leiab toodud ülesande kõikvõimalikud lahendused: > solve :: [[Int]] > solve = error "solve: See definitsioon tuleb teil ise kirjutada"