www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

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

Logo - DracheHaskell-Forum

Shoo

Gepostet:
16.08.2007 14:19

2 Dimensionales Array in Haskell ?  
Kann mir jemand auf die schnelle sagen wie ich ein 2 dimensionales Array am einfachsten in haskell definiere ?

Ich möchte ein Brettspiel modellieren mit der feldgröße NxM vom typ feld ... wie geht das am elegantesten ?

also quasi diesen c-ausdruck in haskell

spielfeld feld[n,m];
Zum Seitenanfang    
 
Siracusa

Gepostet:
21.08.2007 23:59

   
Hallo,

wenn du mit dem GHC arbeitest kannst du alle Module verwenden, die hier aufgelistet sind:
http://www.haskell.org/ghc/docs/latest/html/libraries/.
Für dich dürfte das Modul Data.Array interessant sein, das übrigens auch bei WinHugs dabei ist, falls du WinHugs verwendest. Ein zweidimensionales Array kannst du mit den Funktionen des Array-Moduls leicht konstruieren:
import Data.Array

-- Erstellen einer m x n-Matrix und Initialisierung aller Werte mit 0
spielfeld = array ((0,0), (m-1,n-1)) [((i,j), 0) | i<-[0..m-1], j<-[0..n-1]]
where
m=3
n=5

-- Matrixelemente mit neuen Werten belegen
neuesFeld = spielfeld // [((0,0), 100), ((1,2), 200)]

-- Wert eines Elementes ermitteln
feld = spielfeld ! (1,1)


Die Verwendung von Arrays sollte recht effizient sein, wenngleich eine Implementierung aus verschachtelten Listen vom Typ [[feldtyp]] vermutlich einfacher, aber äußerst langsam ist.

Viele Grüße,

Siracusa
Zum Seitenanfang    
 
Shoo

Gepostet:
22.08.2007 10:54

   
Vielen Dank für die Antwort. Das hat mir geholfen!
Zum Seitenanfang