1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

haskell duvida

Discussão em 'Programação' iniciada por voodum, 19 de Dezembro de 2006. (Respostas: 12; Visualizações: 1578)

  1. voodum

    voodum Power Member

    boas..tenho um problema na univ....nao sei como gerar 4 atributos aleatoriamente e depois devolvelos no ecra...tipo nao percebo nada de IO...alguem me pode dar umas dicas??? cumps
     
  2. Sera mt dificil arranjar apoio aqui... Aposto k tas a fazer o mm trabalho k eu! E mt dificil trabalhar com a funcao Random em Haskell, ja k esta devolve sp IOs... Pods usar a funcao unsafePerformIO, mas o melhor k pods fazer e guardar numa variavel...
     
  3. VuDu

    VuDu Power Member

    O melhor que tem a fazer é mesmo tentar perceber o monad IO, sem isso nunca perceberam o objectivo do trabalho e ficam mal preparados pro exame. Não sei quais os criterios de correcção do professor, mas com unsafepreformIO duvido que saia grande nota do trabalho, independentemente de conseguirem fazer o trabalho todo...
    O livro do professor JBB e do JMV ajuda um bocado, mas o melhor é mesmo tirarem duvidas directamente com um docente. ;)

    Se quizerem arriscar e aprender sozinhos procurem exemplos que usem:


    do x <- bla bla bla
    y <- bla bla bla
    print x
    return y

    etc... onde "bla bla bla" retorna um IO ()
    Atenção que é um exemplo teórico e obviamente que não é interpretado pelo ghc ou plo hugs.

    Boa sorte.
     
    Última edição: 27 de Dezembro de 2006
  4. nunoduke

    nunoduke I quit My Job for Folding

    Tenho o mesmo problema...

    Eu tb tenho um trab para fazer k usa random e tive a tentar fazer kalker coisa, mas e impossivel...

    Tenho k fazer um RPG e para ixo preciso de usar valores aleatorios... Mas meto la a funçao random e a randomRIO e diz k nao esta definida... usei tb o instance Random where.... Mas n deu...

    Se alguem pudesse mandar aí uma programacao em haskell k gerasse valores aleatorios...
    Para uma pessoa analisar, pk assim n vou la...
     
  5. souto

    souto To fold or to FOLD?

    Com a função iterate conseguem fazer isso:

    randoms :: [Int]
    randoms = iterate f 1234
    where
    f x = (1343*x+997) `mod` 1001

    randomList :: Int -> [Int]
    randomList n = take n randoms

    basta chamares a função randomList com o número de números aleatórios que queres e voilá, lista com números aleatórios.

    cumprimentos.
     
  6. Neo4

    Neo4 Banido

    Boas eu tb to a fazer o trabalho mas ja o acabei, estou nas perguntas de valorizaçao, alguem me sabe dizer cm é que eu faço para ter num fixeiro txt varias palavras e ele ir buscar para cada jogo 6 aleatoriamente?

    obrigado
     
  7. vitor_daniel

    vitor_daniel Power Member

  8. jptugagmr

    jptugagmr Power Member

    eu tb tou a fazer esse trabalho .:)

    mas ainda ñ o acabei :lol:.


    tb nao percebo nada dos IO´s


    fikem bem:wah:
     
  9. Neo4

    Neo4 Banido

    essa do random ate 6 é basica....
    eu queria era uma que de um fixeiro externo txt retirasse aleatoriamente 6 palavras....
     
  10. vitor_daniel

    vitor_daniel Power Member

    boas

    basicamente o que tens de fazer é carregar um ficheiro para uma string. Assumindo que as palavras estão separadas por espaços usas uma outra função que procura pelas palavras pela ordem dos números aleatórios numa lista.
    Por ex: pegas numa função recursiva, string com "A vida é como um livro que deve ser folheado página por página sem se consultar o índice" e uma lista de aleatórios com (1,2,4,7,9) e usas a função para procurar as palavras onde 1 corresponde a primeira palavra , 2 a segunda etc..

    Pode ajudar ter a lista de aleatórios ordenada e talvez em vez de uma string ter uma lista de strings.
     
  11. VuDu

    VuDu Power Member

    Vi uns caloiros a fazer esse trabalho e nos apontamentos das aulas do JBB tinham lá explicado como brincar com ficheiros.
     
  12. souto

    souto To fold or to FOLD?

    tou a ver.
    pensa assim, do *ficheiro* nao vais conseguir extrair seis palavras aleatórias.
    primeiro tens que ler o ficheiro para memória. vais obter uma string com todo o conteúdo do texto.

    após isso, fazes uma função para separar as palavras, através de espaços, newlines (os chamados caracteres de whitespace). essa função deverá retornar um valor do tipo [String], em que cada String contém uma palavra.

    a partir daí, penso que se torna mais fácil. escolhes vítimas aleatórias ao longo da array de strings (ou seja, do seu length).

    cumprimentos.
     
  13. Neo4

    Neo4 Banido

    obrigado pela ajuda :) ja esta feito =p
    so fica por fazer a classe aventura =)
     

Partilhar esta Página