List¸¦ ÀÌ¿ëÇÑ ÇÁ·Î±×·¡¹Ö
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

List ¼Ò°³

  • erlang´Â list¸¦ Áö¿øÇÑ´Ù.
  • list ´Â [¿Í]·Î Ç¥ÇöµÇ¸ç, °¢ ¿ø¼Ò´Â ,¸¦ ÀÌ¿ëÇØ¼­ ±¸ºÐÀÌ µÈ´Ù. ¿¹¸¦ µéÀÚ¸é [E1, E2, E3,....]½ÄÀ¸·Î list¸¦ Ç¥ÇöÇÒ ¼ö ÀÖ´Ù. ÀÌ ¸®½ºÆ®ÀÇ ¿ø¼Ò´Â E1, E2, E3, ... °¡ µÈ´Ù.
rt(3)Ç¥ÁØ ÄüÁ¤·ÄÇÔ¼ö

List¸¦ ´Ù·ç±â À§ÇÑ ³»ÀåÇÔ¼öµé

erlang´Â ¸®½ºÆ®¿Í ´Ù¸¥ µ¥ÀÌÅÍ Å¸ÀÔ°£ÀÇ º¯È¯À» À§ÇÑ ´Ù¾çÇÑ ³»ÀåÇÔ¼ö¸¦ °¡Áö°í ÀÖ´Ù.

atom_to_list(A)
atom A¸¦ ASCII ¹®ÀÚÄÚµå ¸®½ºÆ®·Î º¯È¯ÇÑ´Ù.
¿¹) atom_to_list(hello) => [104,101,108,108,111]

float_to_list(F)
float point ¼ýÀÚ F¸¦ ASCII ¹®ÀÚÄÚµåÀÇ ¸®½ºÆ®·Î º¯È¯ÇÑ´Ù.
¿¹) float_to_list(1.5) => [49,46,53,48,48,...,48].

integer_to_list(I)
integerÇü ¼ýÀÚ I¸¦ ASCII ¹®ÀÚÄÚµå·Î º¯È¯ÇÑ´Ù.
¿¹) integer_to_list(1245) => [49, 50, 52, 53].

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_float([51,46,49,52,49,53,57])] => 3.14159

list_to_integer(L)
ASCII ¹®ÀÚÄÚµå ¸®½ºÆ® LÀ» integer ÇüÀ¸·Î º¯È¯ÇÑ´Ù.
¿¹) list_to_integer([49,50,51,52]) => 1234.

hd(L)
¸®½ºÆ® LÀÇ Ã¹¹øÂ° ¿ø¼Ò¸¦ µÇµ¹·ÁÁØ´Ù.
¿¹) hd([a,b,c,d]) => a.

tl(L)
¸®½ºÆ® L¿¡¼­ óÀ½¿ø¼Ò¸¦ Á¦¿ÜÇÑ ³ª¸ÓÁö - tail -À» ¸®ÅÏÇÑ´Ù.
¿¹) tl([a,b,c,d])

length(L)
¸®½ºÆ® LÀÇ ¿ø¼Ò °¹¼ö¸¦ ¸®ÅÏÇÑ´Ù.
¿¹) length([a,b,c,d]) => 4.


ÀϹÝÀûÀÎ ¸®½ºÆ® ÇÔ¼ö

¿©±â¿¡¼­´Â °£´ÜÇÑ ¸®½ºÆ® ÇÔ¼öµé¿¡ ´ëÇØ¼­ ¾Ë¾Æº¼ °ÍÀÌ´Ù. ÀÌÇÏ ¼³¸íÇÏ´Â ¸ðµç ¸®½ºÆ®ÇÔ¼öµéÀº lists module¿¡ Æ÷ÇԵȴÙ.

Àç±ÍÈ£ÃâÀ» ÀÌ¿ëÇØ¼­ ¹®Á¦°¡ ÀÌÇØÇϱ⠽±°Ô ±â¼úµÇ¾ú´Ù´Â Á¡ÀÌ Àλó±í´Ù.
==== member ===
member(X, L) ¸¸¾à X°¡ ¸®½ºÆ® LÀÇ ¿ø¼Ò¶ó¸é ÂüÀ» ±×·¸Áö ¾Ê´Ù¸é °ÅÁþÀ» ¸®ÅÏÇÑ´Ù. ÀÌ ÇÔ¼ö´Â ´ÙÀ½°ú °°ÀÌ Á¤ÀǵǾî ÀÖ´Ù.
member(X, X|_) -> true;
member(X, _|T) -> member(X, T);
member(X, []) -> false.
ù¹øÂ° Àý¿¡¼­ ¸¸¾à 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À» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.