functional-programming - 二郎 : Traversing N by N area

标签 functional-programming erlang

我希望遍历 NxN 区域,给定起点 X、Y 和要遍历的正方形的大小。例如。给定 X=10,Y=12,Size=2 - 我想生成 10,10 ; 10,11; 11,10 和 11,11。

我想到了这个,但它似乎会无限地继续下去:

traverse({X,Y,Xend,Yend}) ->

    % print X,Y values here....     

    case (X == Xend-1) andalso (Y == Yend-1)  of
        true -> 
           ok;
        _->         
           case (Y < Yend-1) of
              true ->
            traverse({X,Y+1,Xend,Yend});
              _->
            traverse({X+1,Y,Xend,Yend})
           end
    end.

我从另一个函数调用了上面的函数:

Size = 3,
traverse({10,20,10+Size,20+Size}).

我做错了什么?我实际上是功能范式的新手,我尝试在 C 上实现它,使用“return”代替上面的“ok”,它起作用了,但我猜,我没有足够的“功能”思考!

最佳答案

traverse(X0, Y0, S) ->
    [
     io:format("coords: ~p~n", [{X,Y}])
    || X <- lists:seq(X0, X0 + S - 1),
       Y <- lists:seq(Y0, Y0 + S - 1)
    ],
    ok

在外壳中:

1> traverse(10, 12, 2).
coords: {10,12}
coords: {10,13}
coords: {11,12}
coords: {11,13}
ok

关于functional-programming - 二郎 : Traversing N by N area,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1875113/

相关文章:

erlang - 调用 gen_server :cast from Mod:handle_cast

Erlang 元组匹配元素类型

Erlang 生成任意数量的匿名函数?

erlang - 如何在氮中调用erlang函数?

c++ - C/C++脚本优化

.net - 使用空参数调用函数的术语

functional-programming - 函数式编程适合哪种问题?

functional-programming - 哪些函数式语言实现允许线程并行运行?

scala - 使用两个条件过滤列表并创建 map scala

functional-programming - 有哪些适合初学者的好的 Erlang 入门/教程?