editada 18/06/15 às 0:19
Mas é Lisp ou Prolog? Ou você quer fazer em ambas as linguagens? (e nesse caso, seria melhor fazer duas perguntas, não?) A propósito, seu problema maior é na leitura dos dados nesse formato específico, na lógica da função em si, ou ambos? Já tem alguma coisa pronta? Essa pergunta me parece um tanto ampla, mas posso tentar responder algo (em Prolog, não sei em Lisp). – mgibsonbr 17/06/15 às 22:36
prolog, em ambos,n tenho nd pronto! – vitor 17/06/15 às 23:39
Esse formato de entrada é bastante estranho... Isso é algum exercício ou coisa desse tipo, ou é um problema prático? Nessa pergunta relacionada eu explico como ler dados de formato arbitrário de um arquivo de entrada ou do stdin (usando DCG), teria apenas que adaptar. Quanto à função em si, vou dar uma resposta. – mgibsonbr 18/06/15 às 0:25
um exercicio de faculdade,nada complicado ou que necessita de muitas validações. Apenas para se ter uma ideia geral de prolog. Estou com dificuldades de intendimento . – vitor 18/06/15 às 1:01
Ok. Leitura e escrita em Prolog é bastante chata mesmo... Mas estou deixando isso de fora da resposta, pois senão fica muito amplo. Quanto à lógica da função, a resposta que estou escrevendo usa member/2, caso você não conheça esse built-in eu sugiro (pra reforçar seu aprendizado) tentar implementar esse predicado você mesmo. member(?X,?L) tem sucesso se o primeiro argumento X é um elemento qualquer do segundo argumento L (uma lista). – mgibsonbr 18/06/15 às 1:06
respondida 18/06/15 às 1:12
P.S. Agora que percebi que você queria que a função se chamasse LinhasLongas. Em Prolog, tudo que começa com uma letra maiúscula ou um underscore (_) é uma variável, de modo que não é possível se ter uma função com esse nome (a menos que se faça alguma "gambiarra" usando reflexão - tipo usando =.. e assert - e outra gambiarra semelhante na hora de chamar a função...). – mgibsonbr 18/06/15 às 1:38