10 Stimmen

Wie kann ich Erlang's list concatenate schreiben, ohne das lists Modul zu benutzen?

In dem Buch, das ich gerade über Erlang lese, gibt es hinten Übungen, und eine davon besteht darin, die Funktion lists:append neu zu erstellen.

Ich könnte dies einfach mit dem Operator ++ tun, aber ist das nicht sehr langsam? Und ich denke, der Sinn der Übung ist es, dies mit Listenoperationen zu tun, die ich schreibe.

Der einzige Ansatz, der mir bisher einfiel, war, etwas zu tun wie:

concat([], _, Results)->
  Results;
concat(_, [], Results)->
  Results;
concat([Ah|At],B,Results) ->
  concat(At,B,[Ah|Results]).

Aber ich weiß, dass dies falsch ist...

Haben Sie einen Vorschlag, wie man das machen kann?

EDIT: Um die Frage zu klären, hier ein Beispiel für die Ein- und Ausgabe:

Eingabe: [[1,2,3],[],[4,5],[6]] Ausgabe: [1,2,3,4,5,6]

Nachdem ich eine Weile gearbeitet hatte, kam ich auch auf diesen Code:

append([A|[B|[T|[]]]]) ->
  append([A++B|T]);
append([H|T]) ->
  H++T.

Dies funktioniert jedoch nur, wenn die Liste die Größe 3 hat. Wie kann ich dies so ändern, dass es für jede beliebige Anzahl von Listen mit zufälliger Größe funktioniert?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X