2008년 02월 16일
Jolly Jumper in Erlang
문제와 다른 언어 풀이들은 여기
문제 그대로 풀면 하스켈보다 이쁘기 힘드니 수열이 엄청 클 때 병렬로 풀기를 해야겠군.
-module(jollyjumper).
-include_lib("eunit/include/eunit.hrl").
-compile(export_all).
is_stair([], _) ->
true;
is_stair([H|T], Prev) when H =:= Prev + 1 ->
is_stair(T, H);
is_stair(_, _) ->
false.
jolly(L) ->
jolly(L, []).
jolly([A,B|L], Acc) ->
jolly([B|L], [abs(A-B)|Acc]);
jolly([_], Acc) ->
is_stair(lists:sort(Acc), 0).
jollyjumper_test_() ->
[?_assertMatch(true, jolly([1,4,2,3])),
?_assertMatch(false, jolly([2,4,7,11,16])),
?_assertMatch(true, jolly([1]))].
문제 그대로 풀면 하스켈보다 이쁘기 힘드니 수열이 엄청 클 때 병렬로 풀기를 해야겠군.
# by | 2008/02/16 15:12 | Erlang | 트랙백(1) | 덧글(1)







☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
제목 : 그다지 유쾌하지 않은 Jolly Jumper, 그리..
이피님 블로그에 갔다가 Jolly Jumper in Erlang 버전을 보고 그다지 유쾌하지 않았던 Jolly Jumper의 추억(?)을 떠올려본다. 이 유쾌하지 않은 추억의 서막은 Programming Challenges라는 책을 구입하면서 부터 시작됐다. 이 책의 저자는 무척 친절하게도 이 책에 나온 문제를 푼 소스코드가 맞았는지 틀렸는지 알 수 있도록 판정해주는 사이트를 제공하고 있었는데 (사이트에가면 문제의 내용도 모두 볼 수 있다......more
C/C++로 짤 때는 distance 구하고 원래 리스트하고 match되는지 보려면 일일히 비교하는 수 밖에 없었는데.. 역시 erlang의 패턴 매칭이란!!!