LINUX.ORG.RU

[erlang] WTF!?

 


0

1
$touch mth.erl
$vi mth.erl
<INSRT>
-module(mth).
-export([perms/1]).

perms([]) -> [[]];
perms(L) -> [[H|T] || H <- L, T <- perms(L--[H])].

<ESC>:wq
$erl
Erlang (BEAM) emulator version 5.6.5 [source] [64-bit] [smp:2] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.6.5  (abort with ^G)
1> c(mth).
{ok,mth}
2> mth:perms("Pyth"). 
["Pyth","Pyht","Ptyh","Pthy","Phyt","Phty","yPth","yPht",
 "ytPh","ythP","yhPt","yhtP","tPyh","tPhy","tyPh","tyhP",
 "thPy","thyP","hPyt","hPty","hyPt","hytP","htPy","htyP"]
3> mth:perms("Pytha").
["Pytha","Pytah","Pyhta","Pyhat","Pyath","Pyaht","Ptyha",
 "Ptyah","Pthya","Pthay","Ptayh","Ptahy","Phyta","Phyat",
 "Phtya","Phtay","Phayt","Phaty","Payth","Payht","Patyh",
 "Pathy","Pahyt","Pahty","yPtha","yPtah","yPhta","yPhat",
 [...]|...]
4>

[...]|...] <------------ ????

Читай мануалы. Слишком длинный список.

cirno@perfect-math-class /tmp $ cat mth.erl 
-module(mth).
-export([perms/1]).

perms([]) ->
    [[]];
perms(L) ->
    [[H|T] || H <- L,
	      T <- perms(L -- [H])].
cirno@perfect-math-class /tmp $ erl
Erlang R14B (erts-5.8.1) [source] [64-bit] [smp:4:4] [rq:4] [async-threads:0] [kernel-poll:false]

Eshell V5.8.1  (abort with ^G)
1> c(mth).
{ok,mth}
2> io:format("~p~n", [mth:perms("12345")]).
["12345","12354","12435","12453","12534","12543","13245","13254","13425",
 "13452","13524","13542","14235","14253","14325","14352","14523","14532",
 "15234","15243","15324","15342","15423","15432","21345","21354","21435",
 "21453","21534","21543","23145","23154","23415","23451","23514","23541",
 "24135","24153","24315","24351","24513","24531","25134","25143","25314",
 "25341","25413","25431","31245","31254","31425","31452","31524","31542",
 "32145","32154","32415","32451","32514","32541","34125","34152","34215",
 "34251","34512","34521","35124","35142","35214","35241","35412","35421",
 "41235","41253","41325","41352","41523","41532","42135","42153","42315",
 "42351","42513","42531","43125","43152","43215","43251","43512","43521",
 "45123","45132","45213","45231","45312","45321","51234","51243","51324",
 "51342","51423","51432","52134","52143","52314","52341","52413","52431",
 "53124","53142","53214","53241","53412","53421","54123","54132","54213",
 "54231","54312","54321"]
ok
3>
tensai_cirno ★★★★★
()
Ответ на: комментарий от tensai_cirno

Дык, читаю ж ведь и по ходу возникают вот такие вопросики. Спасибо кстати, за ваш ответ, а то я почти уже нехорошее начал думать.

gandjubas
() автор топика
Ответ на: комментарий от tensai_cirno

А, и ещё каверзный вопрос. Я тут запусти сдуру расчёт пифагорейских триплетов (Armstrong, Programming Erlang Software for a concurrent world, p. 63) для N =:= 1000 и посмотрел в System Monitor и обнаружил следующее: из двух ядер проца работает только одно. Там, типо, надо в настройках эрланга что-то поткрутить, чтобы был Ъ параллелизм или где?

gandjubas
() автор топика
Ответ на: комментарий от gandjubas

Не возможно а точно он прав! Ерлэнг, чтоб вести себя предсказуемо, анализировать и параллелить его не станет. Зато два параллельных процесса ерлэнг могут быть запущены на разных ядрах автоматом.

anonymous
()
Ответ на: комментарий от anonymous

Его в смысле отдельный процесс ерлэнг.

anonymous
()
Ответ на: комментарий от arhibot

> Армстронга бы хоть дочитал.

А я его и читию, это мой первый мануал.

Не возможно а точно он прав!

Да, я тупанул, т.к. пифагорейские триплеты описаны в главе под названием Sequential Programming.

gandjubas
() автор топика
Ответ на: комментарий от anonymous

> Не возможно а точно он прав! Ерлэнг, чтоб вести себя предсказуемо, анализировать и параллелить его не станет. Зато два параллельных процесса ерлэнг могут быть запущены на разных ядрах автоматом.

Отсыпь пожалуйста.

tensai_cirno ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.