Forum: LISP

Forum huvudsida -> Programmering -> LISP

Sidor: 1

Till botten

DemonicDM 17:11 - 9:e December 2007 | Post #1
Medlem
Inlägg: 10


Skicka PM

Hej.

Behöver en enkel rekursiv funktion som ska jämföra elementerna i en lista och returnerar resultat om den hittar bara 2 element med samma värde

listan innehåller

((1 2) (6 7) (3 4) (1 2))

alltså resultatet ska bli (1 2).

ps antigen med equal eller intersection eller bättre förslag.

mvh
Demon.





Independence 17:15 - 9:e December 2007 | Post #2
Administratör
Inlägg: 1800


Skicka PM
Skoluppgift?Smiley

-------------------------

Vi är riddarna som säger fiskbulle!





DemonicDM 17:21 - 9:e December 2007 | Post #3
Medlem
Inlägg: 10


Skicka PM
Jag som blev glad att det har kommit något svar..Smiley

svaret: ja och nej.

har du något bra lösning?

mvh demon




Fasting 17:23 - 9:e December 2007 | Post #4
Medlem
Inlägg: 121


Skicka PM
Vill inte göra uppgiften åt dig men kan iaf säga att det borde vara dubbelrekursion du använder dig av.

Dock exakt mer hur det ska skrivas vågar jag mig inte på eftersom då lär alla mardrömmar om LISPen dyka upp igenSmiley

-------------------------
Efter att ni har läst det här har ni insett att det inte gav något.



Independence 17:24 - 9:e December 2007 | Post #5
Administratör
Inlägg: 1800


Skicka PM
Du får nog förklara problemet lite bättre, och om det är en skoluppgift är nog lite "pointers" bättre än en fullständigt lösningSmiley

-------------------------

Vi är riddarna som säger fiskbulle!





DemonicDM 17:32 - 9:e December 2007 | Post #6
Medlem
Inlägg: 10


Skicka PM
Det här är inget skolarbete. egentligen vill jag ha en rekursiv funktion som hanterar listor med hjälp av intersection.

intersection tar emot 2 listor dock vill jag att använda bara en lista med olika positioner. nth n

alltså.

här har vi en lista

((1 2) (6 7) (3 4) (1 2)) med 4 element (1 2) är en element.

funktionen skall börja med (1 2) och kolla om det finns en till (1 2) och så vidare och samma sak med resten av elementerna


behöver jag förklara mer?

mvh demon




Fasting 18:29 - 9:e December 2007 | Post #7
Medlem
Inlägg: 121


Skicka PM
typ som en loop i en loop.

  1. for(x){
  2. for(y){
  3. kollar liknelsen \o/
  4. }
  5. }


Hur man gör det i lisp är en anna sak dockSmiley

-------------------------
Efter att ni har läst det här har ni insett att det inte gav något.



FunkyChicken 18:34 - 9:e December 2007 | Post #8
Nyhetsredaktör
Inlägg: 800


Skicka PM
Inte en skoluppgift, hur menar du nu?
Skriver du lisp... frivilligt?




DemonicDM 18:35 - 9:e December 2007 | Post #9
Medlem
Inlägg: 10


Skicka PM
hej. tack.. men jag har redan skrivt en kod med loop, men som jag skrev tidigare, det ska vara rekursiv funktion.


edit:

Projektarbete dock ej skolarbete - ej frivilligt.Smiley


Senast redigerad 19:12 - 9:e December 2007


HärJ 21:15 - 9:e December 2007 | Post #10
Moderator
Inlägg: 1198


Skicka PM
    Citat av FunkyChicken:
Inte en skoluppgift, hur menar du nu?
Skriver du lisp... frivilligt?

klart man skriver lisp frivilligtSmiley

Tycker fastings lösning verkar bra. Varför måste den vara rekursiv?

-------------------------
Tänk om jag vore en skalärprodukt!



DemonicDM 21:28 - 9:e December 2007 | Post #11
Medlem
Inlägg: 10


Skicka PM
Bättre och mer läsbart kod om det är rekursiv.

så blir något hjälp?.






DemonicDM 16:05 - 12:a December 2007 | Post #12
Medlem
Inlägg: 10


Skicka PM
Problem fixat. koden blev fullt med loopar istället.
tack för all goda tips.. NOT. Smiley

Länge leve LISP, Hell no.

mvh demon




viblo 19:28 - 12:a December 2007 | Post #13
Medlem
Inlägg: 25


Skicka PM
Jag kan inte lisp, men något liknande det här borde funka om du gör om det till riktig lispkod:
Såhär kan man skriva i haskell:

f (x:[]) = False
f (x:y:xs) = f'' (x:xs) or f (y:xs)

f'' x:[] = False
f'' (x:y:xs) = if x == y then True
else f'' (x:xs)

Och i lisp blir det väl något liknande det här:

(deffun f (x)
(if length(x) > 1
(or (f2 (list (first x) (rest(rest x))))
(f (list (first(rest x)) (rest(rest x)))
)
)
(deffun f2 (x)
osv...


Inte det bästa sättet o göra det på kanske, men iaf rekursivtSmiley

-------------------------
Ingen signatur!



DemonicDM 20:22 - 12:a December 2007 | Post #14
Medlem
Inlägg: 10


Skicka PM
tack, det var snällt av dig

mvh demon.




Sidor: 1

Forum huvudsida -> Programmering -> LISP
Atom feed

Du får inte posta i den här tråden | Till toppen