Gepostet: |
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 | |||||||||||
Gepostet: |
|||||||||||
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]] 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 | |||||||||||
Gepostet: |
|||||||||||
vielen dank für die antwort ... gut verständlich lg xlucky |
|||||||||||
Zum Seitenanfang | |||||||||||