ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù. List ¼Ò°³
List¸¦ ´Ù·ç±â À§ÇÑ ³»ÀåÇÔ¼öµé
erlang´Â ¸®½ºÆ®¿Í ´Ù¸¥ µ¥ÀÌÅÍ Å¸ÀÔ°£ÀÇ º¯È¯À» À§ÇÑ ´Ù¾çÇÑ ³»ÀåÇÔ¼ö¸¦ °¡Áö°í ÀÖ´Ù.
atom_to_list(A) float_to_list(F)
float point ¼ýÀÚ F¸¦ ASCII ¹®ÀÚÄÚµåÀÇ ¸®½ºÆ®·Î º¯È¯ÇÑ´Ù.
integer_to_list(I)¿¹) float_to_list(1.5) => [49,46,53,48,48,...,48]. list_to_atom(L)
ASCII ¹®ÀÚÄÚµå ¸®½ºÆ® LÀ» atomÀ¸·Î º¯È¯ÇÑ´Ù.
¿¹) list_to_atom([119,111,114,108,100]) => world.
list_to_float(L)
ASCII ¹®ÀÚÄÚµå ¸®½ºÆ® LÀ» floating point ¼ýÀÚ·Î º¯È¯ÇÑ´Ù.
list_to_integer(L)¿¹) list_to_float([51,46,49,52,49,53,57])] => 3.14159
ASCII ¹®ÀÚÄÚµå ¸®½ºÆ® LÀ» integer ÇüÀ¸·Î º¯È¯ÇÑ´Ù.
hd(L)¿¹) list_to_integer([49,50,51,52]) => 1234.
¸®½ºÆ® LÀÇ Ã¹¹øÂ° ¿ø¼Ò¸¦ µÇµ¹·ÁÁØ´Ù.
tl(L)¿¹) hd([a,b,c,d]) => a.
¸®½ºÆ® L¿¡¼ óÀ½¿ø¼Ò¸¦ Á¦¿ÜÇÑ ³ª¸ÓÁö - tail -À» ¸®ÅÏÇÑ´Ù.
length(L)¿¹) tl([a,b,c,d])
¸®½ºÆ® LÀÇ ¿ø¼Ò °¹¼ö¸¦ ¸®ÅÏÇÑ´Ù.
¿¹) length([a,b,c,d]) => 4. ÀϹÝÀûÀÎ ¸®½ºÆ® ÇÔ¼ö
¿©±â¿¡¼´Â °£´ÜÇÑ ¸®½ºÆ® ÇÔ¼öµé¿¡ ´ëÇØ¼ ¾Ë¾Æº¼ °ÍÀÌ´Ù. ÀÌÇÏ ¼³¸íÇÏ´Â ¸ðµç ¸®½ºÆ®ÇÔ¼öµéÀº lists module¿¡ Æ÷ÇԵȴÙ.
Àç±ÍÈ£ÃâÀ» ÀÌ¿ëÇØ¼ ¹®Á¦°¡ ÀÌÇØÇϱ⠽±°Ô ±â¼úµÇ¾ú´Ù´Â Á¡ÀÌ Àλó±í´Ù. ==== member === member(X, L) ¸¸¾à X°¡ ¸®½ºÆ® LÀÇ ¿ø¼Ò¶ó¸é ÂüÀ» ±×·¸Áö ¾Ê´Ù¸é °ÅÁþÀ» ¸®ÅÏÇÑ´Ù. ÀÌ ÇÔ¼ö´Â ´ÙÀ½°ú °°ÀÌ Á¤ÀǵǾî ÀÖ´Ù. ù¹øÂ° Àý¿¡¼ ¸¸¾à X°¡ ¸®½ºÆ®ÀÇ Ã¹¹øÂ° ¿ø¼Ò¿Í ÀÏÄ¡ÇÑ´Ù¸é true¸¦ ¸®ÅÏÇÑ´Ù. ±×·¸Áö ¾Ê´Ù¸é µÎ¹øÂ° ÀýÀÌ ¼öÇàÀÌ µÇ´Âµ¥, Áï µÎ¹øÂ° ¿ø¼Ò¿Í ÀÏÄ¡ÇÏ´ÂÁö¸¦ ºñ±³ÇÏ°Ô µÈ´Ù. ÀÌ·¸°Ô ÇØ¼ Àç±ÍÀûÀ¸·Î memberÇÔ¼ö¸¦ È£ÃâÀ» ÇÏ¸é¼ ÀÏÄ¡ÇÏ´Â ¿ø¼Ò°¡ ÀÖ´ÂÁö È®ÀÎÇÑ´Ù. ¸¸¾à ¸ðµç ¿ø¼Ò¸¦ °Ë»çÇØ¼ ºó¸®½ºÆ®°¡ ³Ñ¾î¿À°Ô µÇ¸é 3¹øÂ° ÀýÀ» ½ÇÇàÇÏ°Ô µÇ°í false¸¦ ¸®ÅÏÇÑ´Ù.
memberÇÔ¼ö°¡ ¾î¶»°Ô ½ÇÇàµÇ´ÂÁö¸¦ ¹¦»çÇØ º¸¾Ò´Ù. > lists:member(a,[1,2,a,b,c]) (0)lists:member(a,[1,2,a,b,c]) (1).lists:member(a,[2,a,b,c]) (2)..lists:member(a,[a,b,c]) (2)..true (1).true (0)true true > lists:member(a,[1,2,3,4]) (0)lists:member(a,[1,2,3,4]) (1).lists:member(a,[2,3,4]) (2)..lists:member(a,[3,4]) (3)...lists:member(a,[4]) (4)....lists:member(a,[]) (4)....false (3)...false (2)..false (1).false (0)false false append
apend(A,B) µÎ°³ÀÇ ¸®½ºÆ® A¿Í B¸¦ ¿¬°áÇÑ´Ù. append([H|L1], L2) -> [H|append(L1, L2)]; append([], L) -> L.µÎ¹øÂ° ÀýÀº °£´ÜÈ÷ ÀÌÇØÇÒ ¼ö ÀÖ´Ù. ù¹øÂ° ¸®½ºÆ®°¡ ºñ¾îÀÖÀ¸¸é, µÎ¹øÂ° ¸®½ºÆ®¸¦ ±×´ë·Î ¸®ÅÏÇ϶ó´Â ¾ê±â´Ù.
ù¹øÂ° ÀýÀº óÀ½ÀÇ ¸®½ºÆ®°¡ ºñ¾îÀÖÁö ¾Ê´Ù¸é, ´Ù¸¥ ¸®½ºÆ®¿¡ Ãß°¡Ç϶ó´Â Àǹ̴Ù.
ÀÌ·¯ÇÑ °úÁ¤À» ¹¦»çÇØ º¸¾Ò´Ù. > lists:append([a,b,c],[d,e,f]). (0)lists:append([a,b,c],[d,e,f]) (1).lists:append([b,c],[d,e,f]) (2)..lists:append([c],[d,e,f]) (3)...lists:append([],[d,e,f]) (3)...[d,e,f] (2)..[c,d,e,f] (1).[b,c,d,e,f] (0)[a,b,c,d,e,f] reverse
reverse(L)Àº ¸®½ºÆ® LÀÇ ¿ø¼ÒÀÇ ¼ø¼¸¦ µÚÁý´Â´Ù. reverse(L) -> reverse(L,[]).
reverse([H|T]), Acc) ->
reverse(T,[H|Acc]);
reverse([], Acc) ->
Acc.
reverse(L)ÀÌ ½ÇÇàµÇ¸é reverse/2¶ó´Â º¸Á¶ÇÔ¼ö¸¦ Ç༺ÇÑ´Ù. »õ·Î ¸¸µé¾îÁö´Â ÇÔ¼ö´Â 2¹øÂ°ÀÎÀÚ·Î ¸®½ºÆ®¸¦ °¡Áö´Âµ¥, ¿©±â¿¡ °á°ú°¡ ÀúÀåµÈ´Ù.
reverse(L, Acc)°¡ È£ÃâµÇ¾úÀ» ¶§, LÀÌ ºñ¾îÀÖ´Â ¸®½ºÆ®°¡ ¾Æ´Ï¶ó¸é, LÀÇ Ã¹¹øÂ° ¿ø¼Ò»èÁ¦ÇÑ´ÙÀ½ AccÀÇ Ã³À½À¸·Î º¸³½´Ù. Áï reverse([x,y,z], Acc)ÀÇ °á°ú´Â reverse([y,z], x|Acc)°¡ µÈ´Ù.
reverse ´Â ´ÙÀ½°ú °°ÀÌ ¹¦»çÇÒ ¼ö ÀÖ´Ù. > lists:reverse([a,b,c,d]). (0)lists:reverse([a,b,c,d]) (1).lists:reverse([a,b,c,d], []) (2)..lists:reverse([b,c,d], [a]) (3)...lists:reverse([c,d], [b,a]) (4)....lists:reverse([d], [c,b,a]) (5).....lists:reverse([], [d,c,b,a]) (5).....[d,c,b,a] (4)....[d,c,b,a] (3)...[d,c,b,a] (2)..[d,c,b,a] (1).[d,c,b,a] (0)[d,c,b,a] [d,c,b,a] delete_all
delete_all(X, L) ´Â ¸®½ºÆ® L¿¡¼ X¿ø¼Ò¸¦ »èÁ¦ÇÑ´Ù. delete_all(X, [X|T]) ->
delete_all(X, T);
delete_all(X, [Y|T]) ->
[Y | delete_all(X, T)];
delete_all(_, []) ->
[].
¿¹Á¦
¿©±â¿¡¼´Â Á»´õ º¹ÀâÇÑ ¿¹Á¦µéÀ» ÀÌ¿ëÇØ¼ ¸®½ºÆ®ÀÇ »ç¿ë¹æ¹ý¿¡ ´ëÇØ¼ ¾Ë¾Æº¸µµ·Ï ÇϰڴÙ. sort
´ÙÀ½Àº ¸®½ºÆ®¸¦ Á¤·ÄÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù. Á¤·ÄÀ» À§Çؼ quicksort ¾Ë°í¸®ÁòÀ» »ç¿ëÇß´Ù. Äü¼ÒÆ®´Â ºÐÇÒÁ¤º¹¾Ë°í¸®ÁòÀ» »ç¿ëÇÑ´Ù. Äü¼ÒÆ®¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº QuickSort ¾Ë°í¸®Áò ¼Ò°³¹®¼¸¦ Âü°íÇϱ⠹ٶõ´Ù. QuickSort ¾Ë°í¸®Áò ¼Ò°³´Â C¹öÀüÀÇ sort ÇÔ¼ö°¡ Àִµ¥, ¾Æ·¡ÀÇ erlang ¹öÀüÀÇ ÇÔ¼öµé°ú ºñ±³ÇØ º¸¸é ÇÔ¼öÇü¾ð¾îÀÇ ¸Å·ÂÀ» ´À³¥ ¼ö ÀÖÀ» °ÍÀÌ´Ù. -module(sort).
-export([sort/1]).
-export([split/2]).
sort([]) -> [];
sort([Pivot|Rest]) ->
{Smaller, Bigger} = split(Pivot, Rest),
lists:append(sort(Smaller), [Pivot|sort(Bigger)]).
split(Pivot, L) ->
split(Pivot, L, [], []).
split(Pivot, [], Smaller, Bigger) ->
{Smaller, Bigger};
split(Pivot, [H|T], Smaller, Bigger) when H < Pivot ->
split(Pivot, T, [H|Smaller], Bigger);
split(Pivot, [H|T], Smaller, Bigger) when H >= Pivot ->
split(Pivot, T, Smaller, [H|Bigger]).
ÀÌ ÇÔ¼ö´Â ¸®½ºÆ®ÀÇ Ã¹¹øÂ° ¿ø¼Ò¸¦ pivot·Î ¼±ÅÃÇϰí ÀÖ´Ù. ¿øº» ¸®½ºÆ®´Â Smaller¿Í Bigger µÎ°³ÀÇ ¸®½ºÆ®·Î ³ª´¶¸ç, pivotº¸´Ù ÀÛÀº ¿ø¼Ò´Â Smaller¿¡ pivotº¸´Ù Å« ¿ø¼Ò´Â Bigger¿¡ À§Ä¡ÇÑ´Ù. ÀÌ·¯ÇÑ °úÁ¤À» ´Ù½Ã Smaller°ú Bigger¿¡ ´ëÇØ¼ ¹Ýº¹ÇÏ°Ô µÇ°í, ÃÖÁ¾ÀûÀ¸·Î Á¤·ÄµÈ ¸®½ºÆ®¸¦ ¸®ÅÏÇÏ°Ô µÈ´Ù.
split(Pivot, L)ÇÔ¼ö°¡ Pivot¸¦ Áß½ÉÀ¸·Î Smaller°ú Bigger·Î ¸®½ºÆ® LÀÇ ¿ø¼Ò¸¦ ³ª´©´Â ÀÏÀ» ÇÑ´Ù. ¾Æ·¡´Â split°¡ ¾î¶»°Ô ÀÛµ¿ÇÏ´ÂÁö¸¦ º¸¿©ÁÖ°í ÀÖ´Ù.
> sort:split(7,[2,1,4,23,6,8,43,9,3]).
{[3,6,4,1,2],[9,43,8,23]}
¸¸¾à ´ç½ÅÀÌ sort([7,2,1,4,23,6,8,43,9,3])À» È£Ãâ Çß´Ù¸é, pivotÀ¸·Î 7ÀÌ ¼±Åõǰí, split/2°¡ pivot 7°ú ÇÔ²² È£ÃâÀÌ µÈ´Ù. ÀÌ °á°ú pivot 7À» ±âÁØÀ¸·Î 7º¸´Ù ´õÀÛÀº ¿ø¼ÒÀÎ[3,6,4,1,2]·Î ÀÌ·ç¾îÁø ¸®½ºÆ®¿Í 7º¸´ÙÅ©°Å³ª °°Àº ¿ø¼ÒÀÎ [9,43,8,23]·Î ÀÌ·ç¾îÁø ¸®½ºÆ®°¡ ¸¸µé¾îÁø´Ù.
ÀÌÁ¦ sort([3,6,4,1,2]) => [1,2,3,4,6] ¿Í sort([9,43,8,23]) => [8,9,23,43]ÀÌ ÀÌ·ç¾îÁ³´Ù°í °¡Á¤Çϸé, ÃÖÁ¾ÀûÀ¸·Î append¸¦ È£ÃâÇØ¼ ¿ÏÀüÈ÷ Á¤·ÄµÈ °á°ú¸¦ ¸¸µé¾î³»°Ô µÈ´Ù.
> append([1,2,3,4,6], [7|[8,9,23,43]]). [1,2,3,4,6,7,8,9,23,43]
¸Ó¸®¸¦ ¾à°£ ´õ ±¼·ÁÁÖ¸é append°¡ Á¸ÀçÇÏÁö ¾Ê´Â, Á»´õ °£´ÜÇÑ ÇÔ¼ö¸¦ ¸¸µé¼öµµ ÀÖ´Ù.
-module(qsort).
-export([qsort/1]).
qsort(X)->
qsort(X,[]).
qsort([Pivot|Rest], Tail)->
{Smaller,Bigger} = split(Pivot,Rest),
qsort(Smaller,[Pivot|qsort(Bigger,Tail)]);
qsort([],Tail)->
Tail.
|
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|