Ir para o conteúdo

Pesquisar na Comunidade

A mostrar resultados para tags ''haskell''.



Mais opções de pesquisa

  • Pesquisa por Tags

    Introduza as tags separadas por vírgulas.
  • Pesquisar por Autor

Tipo de Conteúdo


Fórum

  • Bem-vindos ao Portugal-a-Programar
    • Sugestões, Críticas ou Dúvidas relativas ao P@P
    • Acerca do P@P
    • Apresentações
  • Comunidade a Trabalhar
    • Wiki P@P
    • Apresentação de Projectos de Programação
    • Downloads
  • Revista PROGRAMAR
    • Revista PROGRAMAR
  • Desenvolvimento Geral
    • C
    • C++
    • Java
    • Haskell
    • Pascal
    • Python
    • Bases de Dados
    • Visual Basic Clássico
    • Visual Basic for Applications (VBA)
    • Dispositivos Móveis
    • Outras Linguagens
  • Desenvolvimento Orientado para Web
    • PHP
    • HTML
    • CSS
    • Javascript
    • Outras Linguagens de WebDevelopment
    • Desenvolvimento Web
  • Desenvolvimento .NET
    • C#
    • Visual Basic .NET
    • ASP.NET
    • WPF & SilverLight
  • Software e Sistemas Operativos
    • Software de Produtividade
    • Sistemas Operativos
    • SharePoint
    • Apresentação de Software
  • Informática Extra-Programação
    • Interfaces Visuais
    • Computação Gráfica
    • Algoritmia e Lógica
    • Segurança e Redes
    • Hardware
    • Electrónica
    • Automação Industrial
    • Dúvidas e Discussão de Programação
    • Notícias de Tecnologia
  • Outras Áreas
    • Matemática
    • Dúvidas Gerais
    • Discussão Geral
    • Eventos
    • Anúncios de Emprego
    • Tutoriais
    • Snippets / Armazém de Código
  • Arquivo Morto
    • Projectos Descontinuados
    • System Empires

Blogs

  • Blog dos Moderadores
  • Eventos
  • Notícias de Tecnologia
  • Blog do Staff
  • Revista PROGRAMAR
  • Projectos
  • Wiki

Categorias

  • Revista PROGRAMAR
  • Tutoriais
  • Textos Académicos
  • Exercícios Académicos
    • Exercícios c/ Solução
    • Exercícios s/ Solução
  • Bibliotecas e Aplicações
  • Outros



Filtrar por número de...

539 resultados

  1. Árvore

    Boa Tarde Tenho uma arvore de uma familia e tenho de percorrer a arvore e quando encontrar um nome acrecentar um descendente ja estive a procurar bastante mas nao consigo encontrar uma maneirade percorrer a arvore, alguem pode dar uma ajuda? Desde ja Obrigado
  2. Validar XML em Haskell

    Olá, gostaria de saber se alguém já validou um documento XML por meio de seu DTD e também de seu XSD utilizando Haskell. Encontrei algumas APIs, mas poucos lugares explicando como utilizá-las...
  3. Problema em Haskell! parse error

    Estou com um problema no programa: (Há mais código para trás) | snd points - fst points < 0 = error "Coordernadas invalidas..." | fst points == snd points = 0 | otherwise = recursiv 2 where recursiv h e | aGrande - aPequena < e = aPequena <------ LINHA DE ERRO | otherwise recusiv (2*h) where aGrande = (1/2)*((snd points) - (fst points))*(f (fst points) + f(snd points)) aPequena = areaTrapeziosFixos f points ERRO: parse error (possibly incorrect indentation or mismatched brackets) Alguém me consegue explicar porquê?
  4. Filtrar Lista

    Ola tenho aqui um problema Tenho uma lista de numeros e tenho de percorrer essa lista e ver se os 5 vizinhos de cada numero sao divisiveis por dois se nenhum vizinho for tenho de por esse numero numa lista e no fim devolver a lista com todos os numeros que nao teem vizinhos divisiveis por 2 alguma ajuda sff. [y | numeros, if y + 5 `mod` 2 == 0 then y:resultado] tenho isto mas so ve o 5º à sua frente
  5. Somar dígitos

    Boa tarde estou a tentar fazer uma funçao que some os digitos de um numero a funçao recebe um numero de 1 ate 999 e por exemplo se for 234 tem de devolver 9(2+3+4). Estava a tentar fazer usando o resto da divisao mas nao estou a conseguir alguma ajuda sff
  6. Exercícios com strings

    Olá, gostaria que me ajudasse com essas questões, não estou conseguindo resolver. Questão 01) a) Crie um programa que faça uma codificação sobre uma sequência de caracteres iguais, substitua a sequência por !na, onde n é o número de vezes que o caractere a é repetido. Note que só é interessante comprimir sequências maiores que 3 (três). Veja o exemplo: ghci> comprime "asdffffghjjkllllpoooi" "asd!4fghjjk!4lpoooi" b) Implemente uma função que descomprima o texto resultante da função anterior: ghci> descomprime "asd!4fghjjk!4lpoooi" "asdffffghjjkllllpoooi" Questão 04) Escrever um programa que leia uma linha, a partir do teclado, e verificar se ela contém apenas caracteres alfabéticos imprimindo essa linha na tela com as palavras em ordem inversa. Caso a linha contenha algum caractere não alfabético, a função imprime primeiramente esse caractere não alfabético, e logo após uma mensagem de erro. Agradeço desde já pela anteção.
  7. GTK não Instala

    Olá, Estou com problemas para instalar a biblioteca Cairo. Sou iniciante em Haskell. No site abaixo tento pedir ajuda para o instrutor explicando as mensagens de erro, porém até o momento sem resposta. Tenho um Win de 64 bits e baixei o gtk+-bundle_2.24.10-20120208_win32, do site http://www.geeksbr.com/2014/12/interface-grafica-com-haskell.html#more. Alguém pode me ajudar? A mensagem de erro em resumo se refere a Missing C libraries: z, cairo https://www.udemy.com/curso-haskell/learn/v4/questions/1979728 Desde já grato pela a atenção,
  8. Um artigo interessante sobre os problemas de se reutilizarem tipos primitivos em diversos contextos, para não se ter o trabalho de definir um novo. https://github.com/quchen/articles/blob/master/algebraic-blindness.md
  9. Árvores irregulares

    função procura :: Eq a => a -> RTree a -> Maybe [Int] que procura um elemento numa árvore e, em caso de sucesso, calcula o caminho correspondente.
  10. Jogo bombermam

    Olá, boa noite. Sou nova nestas andanças e sinto-me um pouco aflita e sem saber o que fazer. O problema é o seguinte, foi-me proposto a criação de um jogo e numa fase final temos de programar um bot evitando que ele morra, que se movimente sozinho, que apanhe bonus (sendo para mim uma especie de inteligencia artificial) e eu nao faço ideia como é possivel fazer isto... O jogo é o bomberman e eu agradecia a vossa ajuda!...
  11. listas haskell

    Oi , Neste exercício: Crie um programa que faça uma codificação sobre uma sequência de caracteres iguais, substitua a sequência por !na, onde n é o número de vezes que o caracter a é repetido. Note que só é interessante comprimir sequências maiores que 3. Lembre que uma string (sequência de caracteres) é equivalente a uma lista de caracteres. Exemplo: > comprime “asdffffghjjkllllpoooi” “asd!4fghjjk!4lpoooi” Pensei nisto: comprimir :: String -> String comprimir [] = [] comprimir (h:t) = if (h == head t) then '!' : (1 + aux t) : head else h : comprimir t where aux :: String -> Int aux (h:t) = if h == head t then 1 + aux t else 0 Mas não consigo sair daqui. Obrigada pela atenção.
  12. Modificar um mapa

    Oi, É suposto elaborar um jogo semelhante ao bomb it. Após a elaboração da função para criar um mapa de dimensão ímpar superior a 5, sendo este 9x9: (Onde o # representa a parede, o ? o tijolo, o + as Bombs e o ! Flames) (As coordenadas estão por coluna linha, começando no 0) ######### # # # #?#?# # # ? ? # #?# # #?# # ? ? # # #?#?# # # ?? # ######### + 5 2 + 3 3 ! 5 5 Agora temos como tarefa de trabalho de grupo, criar a função move :: [String] -> Int -> Char -> [String]. O jogador varia entre 0 e 3 e os comandos serão ‘U’ (ir para cima), ‘D’ (ir para baixo), ‘L’ (ir para a esquerda), ‘R’ (ir para a direita) e ‘B’ (colocar uma bomba). Terá de ser acrescentado uma linha a descrever o estado de cada bomba colocada no mapa e uma linha a descrever o estado de cada jogador. Uma bomba é identificada pelo caracter ‘*’ sendo listada depois a sua posição, qual o jogador que a colocou, qual o seu raio de acção e quantos instantes de tempo faltam para explodir. Um jogador é identificado pelo seu dígito sendo listada depois a sua posição e os power ups que entretanto acumulou. O jogo suporta um máximo de 4 jogadores. Bombas e jogadores devem aparecer ordenados por posição e identificador, respectivamente. Considerando este mapa: ######### # # # #?# # # # ? # #?# # #?# # ? ? # # #?#?# # # ?? # ######### + 3 3 ! 5 5 * 7 7 1 1 10 0 4 3 + 1 7 7 Se o jogador o jogador 0 efectuar o comando ‘L’ o resultado será: ######### # # # #?# # # # ? # #?# # #?# # ? ? # # #?#?# # # ?? # ######### ! 5 5 * 7 7 1 1 10 0 3 3 ++ 1 7 7 Já desenvolvemos as funções que determinam se ele pode andar e se pode colocar uma bomba. Também já elaboramos o go_Left, go_Up e afins. Mas com isto só obtivemos em si a linha 0 4 3 +. Mas não sabemos como desenvolver até ao fim Obrigada pela atenção
  13. Função para as coordenadas

    Boa noite pessoal. Bem, estou a escrever este post porque tenho um trabalho prático em haskell para fazer e como sou muito novato nisto ainda não pesco patavina do mesmo. Assim sendo, estou com dificuldades em gerar uma função, que dado um mapa de um jogo (é o bomberman já agora) me dê as coordenadas de cada ponto representado por um '+' do mesmo. O mapa é deste tipo: ######### # # # # #?# # # ?+ # # # # # # # ?+ # # # #?# # ######### (+,4,4) Aqui ficou um bocado mal mas pronto. A ideia é que em baixo do mapa apareçam as coordenadas dos pontos onde tem o +, neste caso ficaria como representei e por aí adiante (primeiro vem a coluna depois vem a linha). Por favor, ajudem-me, desde já obrigado!
  14. Exercício com fold

    Estou a começar a aprender Haskell, e como tal comecei a fazer alguns exercícios simples. Mas deparei-me com este que não consigo responder: Basicamente o objetivo é criar uma função getExpansion, com a assinatura getExpansion :: Eq a => Rules a -> a -> [a], que dado uma lista de regras e um elemento, devolve a respectiva expansão, ou devolve o próprio elemento numa lista se não existir expansão associada. Sendo que uma regra é um par (elemento, lista de elementos), em que à lista de elementos chamamos expansão. Por exemplo, com regras = [(1,[2,1]), (2,[0,2,1])]: ghci> getExpansion regras 1 [2,1] ghci> getExpansion regras 0 [0] Nota: a função getExpansion deve ser implementada através de uma função fold.
  15. Converter um número binário para decimal

    Oi, eu sou novo programando em haskell e estou com problema em fazer a conversão de binário para decimal. Já consegui fazer de decimal para binário como podem ver abaixo: decpbin :: Int -> String decpbin 0 = "0" decpbin 1 = "1" decpbin n = decpbin(n `div` 2) ++ show(n `mod` 2) Se poderem ajudar agradeço.
  16. Funções recursivas: lista com números positivos

    Oi Estou com algumas dificuldades em conseguir chegar à função deste exercício: positivos :: [Int] -> Bool que teste que uma lista só tem elementos positivos Coloquei: positivos :: [Int] -> Bool positivos [ ] = False positivos (h:t) = if h==(-h) then False else positivos t Só que não está a fazer muito sentido porque não sei como colocar o True :/
  17. Dúvidas de haskell para principiantes

    Boa tarde pessoal! Entrei este ano para a Uni e estou a ter uns certos problemas com Programação funcional. Não consigo perceber nada daquilo por mais que estude. Já vi tutoriais, resolvi exercícios mas estou sempre empancado, por mais que estude sinto que nunca saio do sítio. À uns anos aprendi a programar um pouco em C, VB, etc e não senti grandes dificuldades, até tive um excelente aproveitamento. Com Haskell tem sido diferente. Bem, criei este tópico para que todos os iniciantes postem as suas pequenas dúvidas de forma a nos ajudarmos uns aos outros. Aqui vai a minha: Ex.defina a função: multiplo -> testa se o número inteiro m é multiplo de n. A minha solução: multiplo :: (Int,Int)-> Bool multiplo (m,n) = if m mod n==0 then True else False qual é o problema mesmo? Já tentei simplificar, retornado o valor de 0 caso não seja multiplo e 1 caso seja (mudando em cima para Int) mesmo assim não dá. Já agora, caso quisesse colocar uma mensagem do tipo "e inteiro" como fazia? Obrigado a todos os que me puderem ajudar Cumps!
  18. Adicionar minutos a horas

    Oi O exercício, é o seguinte: Adicionar um determinado número de minutos a uma dada hora.´ Então, no sublime, coloquei: int_horas :: Hora -> Bool int_horas (h,m)= if (h<= 23) && (h>=0) && (m<=59) && (m>=0) then True else False soma_min:: Hora -> Int -> Hora soma_min (a,b) c = if (int_horas (a,b)== True) then (a, b+c) Mas no terminal, aparece isto e não percebo porquê: s.hs:28:62: parse error (possibly incorrect indentation or mismatched brackets) Failed, modules loaded: none. Prelude> Obrigada
  19. Pontos de rectângulo

    Oi Deparei-me com este exercício: Defina uma função que recebe 2 pontos que são os vértices da diagonal de um rectângulo paralelo aos eixos e controi uma lista com os 4 pontos desse retangulo. Então, pensei assim: (a,b) A +-------------+ B | | | | C +-------------+ D (c,d) Então, B (c, b) e C (a,d) No sublime, coloquei: type Ponto = (Float,Float) pontos_retangulo :: Ponto -> Ponto -> [Ponto] pontos_retangulo (a,b) (c,d) = [(a,b), (c,b), (a,d), (c,d)] Tenho de acrescentar o meu raciocínio ou posso deixar assim? Obrigadaaaaa
  20. Horas para minutos

    Oi, outra vez Estava a tentar fazer mais uma função e não consegui... Desculpem incomodar. O exercício é o seguinte: type Hora= (Int,Int) Assim o par (0,15) significa meia noite e um quarto. --------------> Conventer um valor em horas (pares inteiros) para minutos (inteiro) No sublime, coloquei: type Hora = (Int,Int) conv_horas_min :: Hora -> Int conv_horas_min (a,b) = (a * 60) + b E no terminal aparece: rafaela@rafaela-X541UV ~/Documents/LI1 $ ghci GHCi, version 7.10.3: http://www.haskell.org/ghc/ :? for help Prelude> :l h.hs [1 of 1] Compiling Main ( h.hs, interpreted ) Ok, modules loaded: Main. *Main> (10,13) (10,13) *Main> Obrigada...
  21. Dúvidas exercícios triângulos e raízes

    Boa noite! Desculpem estar a incomodar... Não consigo perceber quais são os erros que fiz nestes dois exercícios: 1) A função nRaizes que recebe os (3) coeficientes de um polinómio de 2º grau e que calcula o número de raízes (reais) desse polinómio: No sublime, coloquei: raizes :: Float -> Float -> Float -> [Float] raizes a b c = ( ((-b) + sqrt(b^2 - 4 * a * c)) / (2 * a) , ((-b) - sqrt(b^2 - 4 * a * c)) / (2 * a) ) E, depois, apareceu no terminal: rafaela@rafaela-X541UV ~/Documents/LI1 $ ghci GHCi, version 7.10.3: http://www.haskell.org/ghc/ :? for help Prelude> :l ra.hs [1 of 1] Compiling Main ( ra.hs, interpreted ) ra.hs:2:16: Couldn't match expected type ‘[Float]’ with actual type ‘(Float, Float)’ In the expression: (((- b) + sqrt (b ^ 2 - 4 * a * c)) / (2 * a), ((- b) - sqrt (b ^ 2 - 4 * a * c)) / (2 * a)) In an equation for ‘raizes’: raizes a b c = (((- b) + sqrt (b ^ 2 - 4 * a * c)) / (2 * a), ((- b) - sqrt (b ^ 2 - 4 * a * c)) / (2 * a)) Failed, modules loaded: none. 2) Defina uma função que recebe 3 pontos que são os vértices de um triângulo e devolve um tuplo com o comprimento dos seus lados. No sublime, meti: type Ponto = (Float,Float) compr :: Ponto -> Ponto -> Ponto -> (Float, Float, Float) compr a b c = sqrt ((fst b-fst a)^2 + (snd b-snd a)^2)) sqrt ((fst c-fst b)^2 + (snd c-snd b)^2)) sqrt ((fst c-fst a)^2 + (snd c-snd a)^2)) No terminal, aparece: rafaela@rafaela-X541UV ~/Documents/LI1 $ ghci GHCi, version 7.10.3: http://www.haskell.org/ghc/ :? for help Prelude> :l rafs.hs [1 of 1] Compiling Main ( rafs.hs, interpreted ) rafs.hs:3:55: parse error on input ‘)’ Failed, modules loaded: none. Prelude> Obrigada a quem teve paciência para ler até aqui... Aguardo alguma resposta... Beijinhos
  22. Comunicar entre programas

    Boas pessoal, Tenho um trabalho em mãos que consiste num jogo do galo em haskell, dividido em 2 programas, sejam eles o tabuleiro e o jogador. A ideia é ter duas instancias do jogador a correr e uma do tabuleiro e de alguma maneira, através da shell do linux, fazer com que o std output do tabuleiro seja std input dos jogadores e vice versa. Alguém sabe como isto pode ser feito. Já mefalaram de pipelines, mas não sei bem como funcionam. Cumps
  23. Rodar elementos de uma lista

    Boa tarde amigos, Estou iniciando agora no Haskell e de cara recebi a missão de solucionar a questão abaixo, não estou entendendo bem este paradigma . rodar-direita: recebe um número natural, uma lista e retorna uma nova lista onde a posição dos elementos mudou como se eles tivessem sido "rodados" ex.: (rodar-direita 0 '(a s d f g)) ==> (a s d f g) (rodar-direita 1 '(a s d f g)) ==> (g a s d f) (rodar-direita 3 '(a s d f g)) ==> (d f g a s) (rodar-direita 4 '(a s d f g)) ==> (s d f g a) gostaria de ver como seria a implementação da solução para este código.
  24. Melhorar implementação geradores quickcheck

    Boa tarde, Tenho uma dúvida em relação a propriedade quickcheck. Não sei se me podem ajudar, de qualquer forma deixo a dúvida. Obrigado desde já. Grafos têm estas propriedades: O tipo Edge representa uma aresta entre dois nodos data Edge v = Edge {source :: v, target :: v} deriving (Show,Eq,Ord) O tipo Graph representa um grafo orientado data Graph v = Graph {nodes :: Set v, edges :: Set (Edge v)} deriving Show A função isDAG testa se um grafo é acíclico. isDAG :: Ord v => Graph v -> Bool isDAG g = isValid g && all nocycle (nodes g) where nocycle v = all (\a -> v `notMember` reachable g a) $ Set.map target (adj g v) A função isForest testa se um grafo acíclico é uma floresta, ou seja, um conjunto de árvores isForest :: Ord v => DAG v -> Bool isForest g = isDAG g && all (\v -> length (adj g v) <= 1) (nodes g) Os geradores Gerador de DAGs dag ::(Ord v, Arbitrary v)=> Gen (DAG v) dag = arbitrary `suchThat` isDAG Gerador de Florestas forest ::(Ord v, Arbitrary v)=> Gen (Forest v) forest = arbitrary `suchThat` isForest Estes geradores são necessários para testar propriedades sobre estas classes de grafos. Usando os combinadores para definir propriedades quickcheck, como melhoro a implementação destes geradores por forma a serem menos enviesados (sem estarem definidos com o suchThat)?
  25. string para multi conjunto

    Porque é que ele mete à cabeça da lista o elemento que mais vezes ocorre? como poderei solucionar isto? obrigado type MSet a = [(a , Int)] converte :: Eq a => [a] -> MSet a converte [] = [] converte (x:xs) = insere x (converte xs) insere:: Eq a => a -> MSet a -> [(a,Int)] insere x [] = [(x,1)] insere x ((x1,y1):xs) | x == x1 = [(x1,(y1+1))] ++ xs | otherwise = [(x1,y1)] ++ insere x xs o objetivo era devolver. *Main> converte "bacaba" [('b',2),('a',3),('c',1)] no entanto devolve: *Main> converte "bacaba" [('a',3),('b',2),('c',1)]
×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.