Erlang hakkında okuduğum kitap onun arkasında egzersizler var ve bir tanesi listeleri yeniden oluşturmak: fonksiyonu ekle.Listeler modülünü kullanmadan Erlang'ın liste birleştirmesini nasıl yazabilirim?
Bunu, yalnızca ++ operatörünü kullanarak yapabilirim, ancak bu gerçekten yavaş değil mi? Ve egzersizin amacı, yazdığım liste işlemlerini kullanarak bunu yapmak olduğunu düşünüyorum. Bunu hakkında gitmek nasıl
concat([], _, Results)->
Results;
concat(_, [], Results)->
Results;
concat([Ah|At],B,Results) ->
concat(At,B,[Ah|Results]).
Ama bu yanlış olduğunu biliyorum ...
Herhangi önerileri: düşünebildiğim
Bugüne kadar sadece bir yaklaşım böyle bir şey yapmak mı?
DÜZENLEME: soru açıklığa kavuşturmak için, burada bir örnek giriş ve çıkışı:
Girdi: [[1,2,3], [], [4,5], [6]] Çıkış: [1,2,3,4,5,6]
bir süre çalıştıktan sonra, ben de bu kod ile geldi: Ancak
append([A|[B|[T|[]]]]) ->
append([A++B|T]);
append([H|T]) ->
H++T.
, liste boyutu 3 olduğunda bu sadece çalışır Herhangi bir miktarda rastgele boyutlandırılmış listeler için çalışmasını nasıl değiştirebilirim?
Ben Erlang kullanmayın, ama şunu düşünemiyorum: 'listeler: append' '++' dan daha hızlıdır (bence o nasıl yaparsanız yapın). – Zifre
'listeleri: append '_is_' ++ '. –
Ancak, sol işleneni sağ işleneninden büyükse ++ verimsiz olabilir. Bu performans cezası ayrıca listelerde de görülür: Ek? – samoz