www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

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

Logo - DracheHaskell-Forum

xlucky

Gepostet:
06.01.2009 16:20

multiplikationstabelle  
hallo zusammen,

ich suche eine funktion, die eine natürliche Zahl n >= 1 nimmt und eine Multiplikationstabelle für 1 ... n

berechnet. Das Ergebnis soll eine Liste von Listen sein, bei der die inneren Listen jeweils die Zeilen der Tabelle darstellen.


Beispiel: tabelle 3 liefert [[1, 2, 3], [2, 4, 6], [3, 6, 9]]

mein ansatz war zunächst

tabelle :: Int -> [[Int]]
tabelle n = [[1..n], map (*x) [1..n]]
where x = 1..n

allerdings komme ich damit nicht wirklich weiter
vielleicht hat ja jemand von euch einen hilfreichen tipp oder ansatz der mich da weiterbringt

lg xlucky
Zum Seitenanfang    
 
Siracusa

Gepostet:
10.01.2009 01:11

   
Hallo,

> tabelle n = [[1..n], map (*x) [1..n]]

Damit beschreibst du eine Liste mit zwei Unterlisten, einmal [1..n] und einmal [x, 2*x, ..., x*n]. Dabei muß x dann aber eine Zahl sein. Was du ja eher willst ist eine Liste mit n Unterlisten.

> where x = 1..n

Das geht so nicht. Du kannst x nur eine feste Zahl zuweisen oder die Liste [1..n]. Wenn du mehrere Zahlen durchlaufen willst, dann mußt du dir entweder eine rekursive Funktion schreiben, oder du baust ein zweites map um das innere:
tabelle :: Int -> [[Int]]
tabelle n = map (\x -> map (*x) [1..n]) [1..n]

Das \x -> ... ist ein Lambda-Ausdruck und ist nur eine Funktionsdefinition, ohne aber extra einen Namen für die Funktion angeben zu müssen.


Viele Grüße,

Siracusa
Zum Seitenanfang    
 
xlucky

Gepostet:
10.01.2009 17:33

   
vielen dank für die antwort ...
gut verständlich

lg xlucky
Zum Seitenanfang