2009-02-11 9 views
7

Ces jours-ci, je résous Project Euler problèmes dans Erlang.Utilisation de deux tableaux (multi) dimensions dans Erlang

Depuis que je suis un programmeur C++ depuis le début, parfois je veux vraiment coder en utilisant des tableaux bidimensionnels.

Une de mon idée est d'utiliser tuples et des listes comme ceci:

List=[{X,0}||X<-lists:seq(1,3)] 
{1,0} 
{2,0} 
{3,0} 

Est-il bon moyen de mettre en œuvre des tableaux multidimensionnels en Erlang?

Répondre

3

Voir array module mais pour l'accès multidimensionnel, vous devez écrire votre propre enveloppe. Si l'une de vos dimensions est courte et que l'accès est principalement lu, vous pouvez utiliser des tuples et utiliser erlang:element et erlang:setelement. Notre propre emballage est recommandé de toute façon.

2

Essayez tableau (réellement dict) avec {X, Y, Z} comme une clé. Il est ressembler à tableau 3D;)

2

j'ai écrit un petit emballage sur le module de tableau pour les tableaux 2d

-module(array_2d). 
-export([new/2, get/3, set/4]). 

new(Rows, Cols)-> 
    A = array:new(Rows), 
    array:map(fun(_X, _T) -> array:new(Cols) end, A). 

get(RowI, ColI, A) -> 
    Row = array:get(RowI, A), 
    array:get(ColI, Row). 

set(RowI, ColI, Ele, A) -> 
    Row = array:get(RowI, A), 
    Row2 = array:set(ColI, Ele, Row), 
    array:set(RowI, Row2, A). 
Questions connexes