Czy istnieje szybki sposób zamiany płaskiej listy na listę dwóch krotek, tak że lista równa, jak [1,2,3,4,5,6], staje się [{1,2}, {3,4 }, {5,6}]?Najlepszy sposób zamiany płaskiej listy na zestaw dwóch krotek w Erlangu?
To działa, ale czuje się po prostu źle:
tuples_from_flat_list(Target) ->
TargetWithIndex = lists:zip(lists:seq(1, length(Target)), Target),
{K, V} = lists:partition(fun({I, _}) -> I rem 2 == 1 end, TargetWithIndex),
lists:zipwith(fun({_, X}, {_, Y}) -> {X, Y} end, K, V).
Tak, cofanie i prefiksowanie jest zawsze wydajniejsze. Ale myślę, że podejście "proste" działa dobrze jako lekcja 1, a po niej szybko następuje odwrotność/prefiks, jak lekcja 2 ...! –
Dlaczego liczyć długość listy, gdy nie robi się bardziej wrażliwe komunikaty o błędach. Twoja wstecz/2 spowoduje wyświetlenie tego samego komunikatu o błędzie, co twoja rewersja/1. To bezwartościowa praca i trochę ją spowolnić. –
@Hynek: Myślę, że jest lepiej, ponieważ wcześniej zawodzi. Dodaje również jasności tego, kto przeczyta kod: – zakovyrya