Erlang поменять местами два элемента в списке - PullRequest
0 голосов
/ 26 мая 2011

Как быстро поменять местами два элемента в списке Erlang?

Например, у меня есть список: [1,2,3,4], как я могу быстро получить [1,3,2,4]?

Ответы [ 2 ]

4 голосов
/ 26 мая 2011

Вы не сказали в своем вопросе, как вы хотите указать, какие два элемента вы хотите поменять.

Если вы просто хотите поменять местами элементы в позициях 2 и 3 в списке (как в вашем примере):

swap23([A,B,C|Rest]) ->
     [A,C,B|Rest].
1 голос
/ 27 мая 2011

Хорошо, если вы хотите поменять любой индекс на другой, вы можете сделать следующее

swap(List,S1,S2) -> {List2,[F|List3]} = lists:split(S1-1,List),
   LT = List2++[lists:nth(S2,List)|List3],
   {List4,[_|List5]} = lists:split(S2-1,LT),
   List4++[F|List5].
...