Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


lista de exercícios em haskell, Exercícios de Programação Funcional

haskell é uma linguagem funcional e este arquivo serve como exemplo

Tipologia: Exercícios

2021

Compartilhado em 04/09/2021

alexsandro-j-da-silva
alexsandro-j-da-silva 🇧🇷

1 documento

1 / 4

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
{-# OPTIONS_GHC -Wno-incomplete-patterns #-}
import Data.Char
logMes a = tira a
main = do
a <- getLine
let result = logMes a
print result
par s = pares s 0
impar s = impares s 0
resul s = (par s, impar s)
pares :: String -> Int -> String
pares [] x = []
pares (a:as) x
| mod x 2 == 0 = [a]++ pares as (x+1)
| otherwise = pares as (x+1)
impares :: String -> Int -> String
impares [] x = []
impares (a:as) x
| mod x 2 > 0 = [a]++ impares as (x+1)
| otherwise = impares as (x+1)
tira :: String -> String
tira [] = []
tira (s:as)
| s == '[' || s == ']' || s == '(' || s == ')' || s == ','
|| s == '"' || s == ' ' || ord s == 39 || ord s > 60 = tira as
| otherwise = [s] ++ tira as
mec a = tira (head (words a))
{-
main = do
a <- getLine
b <- getLine
let result = impares (tira b ) 0
print result
main = do
a <- getLine
b <- getLine
c <- getChar
let result = comf a c 0 (read b)
print result
par s = pares (words s) 0
impar s = impares (words s) 0
resul s = (par s, impar s)
pares :: [String] -> Int -> [String]
1
pf3
pf4

Pré-visualização parcial do texto

Baixe lista de exercícios em haskell e outras Exercícios em PDF para Programação Funcional, somente na Docsity!

{-# OPTIONS_GHC -Wno-incomplete-patterns #-} import Data.Char logMes a = tira a main = do a <- getLine let result = logMes a print result par s = pares s 0 impar s = impares s 0 resul s = (par s, impar s) pares :: String -> Int -> String pares [] x = [] pares (a:as) x | mod x 2 == 0 = [a]++ pares as (x+1) | otherwise = pares as (x+1) impares :: String -> Int -> String impares [] x = [] impares (a:as) x | mod x 2 > 0 = [a]++ impares as (x+1) | otherwise = impares as (x+1) tira :: String -> String tira [] = [] tira (s:as) | s == '[' || s == ']' || s == '(' || s == ')' || s == ',' || s == '"' || s == ' ' || ord s == 39 || ord s > 60 = tira as | otherwise = [s] ++ tira as mec a = tira (head (words a)) {- main = do a <- getLine b <- getLine let result = impares (tira b ) 0 print result main = do a <- getLine b <- getLine c <- getChar let result = comf a c 0 (read b) print result par s = pares (words s) 0 impar s = impares (words s) 0 resul s = (par s, impar s) pares :: [String] -> Int -> [String]

pares [] x = [] pares (a:as) x | mod x 2 == 0 = [a]++ pares as (x+1) | otherwise = pares as (x+1) impares :: [String] -> Int -> [String] impares [] x = [] impares (a:as) x | mod x 2 > 0 = [a]++ impares as (x+1) | otherwise = impares as (x+1) main = do a <- getLine let result = resul a print result parseInput str = let [n, s] = words str in (read n, s) main :: IO() main = interact $ uncurry paraDireita. parseInput executa :: [(Comando, Valor)] -> Int executa [] = 0 executa (a:as) | fst a == "Inicio" = 0 + executa as | fst a == "Multiplica" = snd a * executa as | fst a == "Soma" = snd a + executa as | fst a == "Subtrai" = - snd a

  • executa as | fst a == "Divide" && snd a /= 0 = div (snd a) (executa as) | fst a == "Divide" && snd a == 0 = - | otherwise = executa as main = do a <- getLine let result = a print result conv :: [Char] -> [Int] conv [] = [] conv (a:as) | as /= [] = ord a - 48 : conv as | otherwise = ord a - 48 : conv as btoi :: [Int] -> Int btoi [] = 0 btoi (a:as) | a == 1 = 2^(length as ) + btoi as | a == 0 = btoi as | otherwise = btoi as

gg :: (String,Char,Int) -> Int gg ([],c,b) = - gg (a:[],c,b) = - gg ((a:as),c,b) | a == c = gg ( as, c, b + 1) | a /= c = gg( as, c, b*0) | as == [] = b | otherwise = gg( as, c, b) comp :: String -> Char -> Int comp (a:as) caracter | a == caracter = 1 + comp as caracter | a /= caracter = comp as caracter | otherwise = 0 isReplica :: String -> Int -> Char -> Bool isReplica a b c = b == comp a c main = do a <- getLine b <- getLine c <- getChar let result = isReplica a (read b) c print result -}