2009-02-11 18 views
7

Estos días estoy resolviendo Project Euler problemas en Erlang.Usando dos matriz (multi) dimensional en Erlang

Como soy programador de C++ desde el principio, a veces realmente quiero codificar utilizando matrices bidimensionales.

Uno de mi idea es usar tuplas y las listas de la siguiente manera:

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

¿Hay una buena manera de poner en práctica las matrices multidimensionales en Erlang?

Respuesta

3

Consulte array module pero para el acceso multidimensional debe escribir su propio contenedor. Si alguna de sus dimensiones es corta y el acceso es mayormente leído, puede usar tuplas y usar erlang:element y erlang:setelement. Se recomienda el envoltorio propio de todos modos.

2

Pruebe array (en realidad dict) con {X, Y, Z} como clave. Es parezca matriz 3d;)

2

escribí un pequeño envoltorio sobre módulo de matriz para las matrices 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). 
Cuestiones relacionadas