www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

Daten merken
Auto-Login
Registrieren
 
Online
niemand
 
Forumsuche
Suche nach:

Logo - DracheHaskell-Forum

Freak110

Gepostet:
16.05.2006 17:57

Bitte wirklich um Hilfe bei Aufgaben  
Hab Krankheitsbedingt den Start verpasst und muss aber unbedingt diese Aufgaben lösen:

Wenn mir jemand helfen könnte wäre dies sehr nett!!!

Danke

1.Definieren Sie in Haskell einen Summentypen Tier, zur Darstellung von Hunden, Katzen, Spinnen,
Tausendfüßlern, Mäusen und Hühnern.
Implementieren Sie anschließend eine Funktion istVierbeiner, die genau dann True ergibt,
wenn das Argument ein Tier mit vier Pfoten bzw. Beinen ist.

und

2.Geben Sie List Comprehensions in Haskell an, die folgende Listen darstellen:
a) Die unendliche Liste aller Dreierpotenzen 1, 3, 9, 27, 81, 243 . . .. (5 Punkte)
b) Die Liste aller Teiler einer gegebenen Zahl n, z.B. soll für n = 30 die Liste
[1,2,3,5,6,10,15,30] generiert werden. (10 Punkte)
c) Die unendliche Liste aller perfekten Zahlen, f¨ur die Sie u.a. das Ergebnis von Aufgabenteil
b) verwenden sollten.
Eine Zahl m heißt perfekt, wenn die Summe aller ihrer Teiler, die ungleich m sind, wiederum
m ergibt. Beispielsweise ist 6 eine perfekte Zahl, denn 1 + 2 + 3 = 6. (10 Punkte)
d) Die unendliche Liste aller Paare (a, b), wobei a eine gerade und durch 3 teilbare Zahl
und b eine ungerade und durch 17 teilbare Zahl ist. Die Elemente sollen hierbei in einer
fairen Reihenfolge generiert werden. Fair bedeutet: Jedes Element wird in endlicher Zeit
generiert, oder auch: Wenn xs die Liste der Paare ist, dann terminiert (a,b) ‘elem‘ xs
für alle a, b mit a gerade und durch 3 teilbar, b ungerade und durch 17 teilbar. (15 Punkte)

Wie gesagt, wäre wirklich sehr nett!!!
Zum Seitenanfang    
 
Freak110

Gepostet:
17.05.2006 10:58

   
hat sich erledigt
Zum Seitenanfang    
 
Jacke

Gepostet:
17.05.2006 14:32

   
ok
Zum Seitenanfang    
 
korchix

Gepostet:
09.05.2011 01:11

   
Hallo,
es wäre nett wenn ihr die Lösung auch veröffentlicht, damit jeder, der auf solche probleme stieß, bekommt zumindest so eine Idee, wie man damit umgehen sollte :)
mich persönlich interessiert die Lösung der Aufgabe (d) auch nur Tipps wäre optimal :)

danke
Zum Seitenanfang    
 
korchix

Gepostet:
09.05.2011 01:13

   
übrigens die Aufgaben a -> c sind hier

http://www.jammni.de/php/forum.php?forum=6&posting=2072

schon gelöst, das habe ich gerade gefunden, bleibt nur d :)
Zum Seitenanfang    
 
Landei

Gepostet:
09.05.2011 08:50

   
Man kann so eine Art Diagonalverfahren verwenden: Für jedes n liefert findPairs die Paare für die Indexe (0,n),(1,n-1),(2,n-2)..(n,0) zurück. enumerate lässt nun n von 0 bis unendlich laufen.


aufgabeD = enumerate [0,6..] [17,51..]

enumerate list1 list2 = concatMap findPairs [0..] where
findPairs n = map (\\index -> (list1 !! index, list2 !! (n-index))) [0..n]
Zum Seitenanfang    
 
Landei

Gepostet:
19.05.2011 12:02

   
Ist hübscher mit List-Comprehension:


enumerate xs ys = [(xs !! k, ys !! (n-k)) | n <- [0..], k <- [0..n]]
Zum Seitenanfang