'Code Snippets/Clojure'에 해당되는 글 6건

  1. 2010.10.14 [Project Euler] Problem 8
  2. 2010.10.11 [Project Euler] Problem 2
  3. 2010.10.08 clojure용 Syntax HighLighting을 위한 js, css
  4. 2010.10.08 Clojure Sample - Sequence
  5. 2010.10.08 Clojure Sample - Function
  6. 2010.10.07 Clojure Sample - Basic
Code Snippets/Clojure2010. 10. 14. 18:14
http://projecteuler.net/index.php?section=problems&id=8
http://www.ibm.com/developerworks/kr/library/os-eclipse-clojure/


Find the greatest product of five consecutive digits in the 1000-digit number.
>> 1000자리 숫자에서 5개의 연속된 곱중 최대값을 찾아라

Beforehand
필요한 기능들을 알아보자.
1. 1000자리 숫자를 표현하기 힘들다.
- 어차피 필요한 것은 연속된 5개의 숫자의 곱이다.
  1000자리 숫자는 문자열로 생각하고, 인덱스 윈도우를 바꿔가며 계산하자.
  즉, [0~4], [1~5], [2~6] ... [996~1000] 으로 가리키는 인덱스의 범위를 바꿔가겠단 말.
2. 필요한 함수는?
- 최대값 : max
- 제어문자가 아닌 숫자만을 선별 : filter, Character/isDigit
- 5개씩 구해진 숫자 시퀀스의 곱 : reduce
- 인덱스 윈도우를 하나씩 옮겨가며 5개씩의 시퀀스를 반환 : for


Make Simple
필요한 문법은 거의 다 알았다.
이제 문제를 간단히 생각해보자. 숫자 시퀀스가 1000개가 아니라 10개라고 생각해보자.

0123456789

여기서 얻을 수 있는 5개의 숫자 시퀀스는 다음과 같다.
01234  12345  23456  34567  45678  56789  67890

시퀀스의 곱의 최대값은?
  5 * 6 * 7 * 8 * 9 = 15120

시퀀스에서 5개씩 어떻게 뽑아올까?

이제 이 두 방법을 조합해서 문제를 풀어보자.


Resolve
문제에 제시된 1000개의 숫자를 문자열로 처리한다.
최대값을 구할 것인데, 5개의 연속된 숫자열의 곱에서 구한다.

'Code Snippets > Clojure' 카테고리의 다른 글

[Project Euler] Problem 2  (0) 2010.10.11
clojure용 Syntax HighLighting을 위한 js, css  (0) 2010.10.08
Clojure Sample - Sequence  (0) 2010.10.08
Clojure Sample - Function  (0) 2010.10.08
Clojure Sample - Basic  (0) 2010.10.07
Posted by codevania
Code Snippets/Clojure2010. 10. 11. 20:00

http://projecteuler.net/index.php?section=problems&id=2

http://www.ibm.com/developerworks/kr/library/os-eclipse-clojure/

 

Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

Find the sum of all the even-valued terms in the sequence which do not exceed four million.

>>피보나치 수열에서 400백만 이하의 모든 짝수들을 합한 결과는?


Beforehand

피보나치 수열의 equation은 다음과 같다.

F[n] = F[n-1] + F[n-2]

where F[0] = 0, F[1] = 1

수열을 나열해보면...

0 , 1,  1,  2,  3,  5,  8,  13,  21,  34,  55,  89, ...


피보나치 수열을 구하는 아주 간단한 방법.

 

하지만 재귀에 의한 이 방법은 무한 시퀀스를 형성하기 때문에, 스택을 빠르게 채워 스택 오버플로우를 일으킬 수 있다. 이 문제는 Seqable object를 산출하는 lazy-seq 함수를 사용하여 해결할 수 있다.

 

 

 

Make Simple

여기서 간단하게 100이하의 피보나치 수열에 대해서만 생각해 보자.

짝수들은?

 0,  1,  1,  2,  3,  5,  8,  13,  21,  34,  55,  89, ...

 

이 짝수들의 합은?

2 + 8 + 34 = 44

 

100을 처음으로 넘는 요소까지의 피보나치 수열을 정의하자.

 

 100 이하의 피보나치 수열은?

 

 그 중에서 짝수만 구하면?

 

이것들의 합은?

 

이제, 피보나치 수열을 지연시켜 구하는 함수를 fibo에 적용시키고, 100이 아닌 4000000을 적용하면 된다.

 

Resolve

 

'Code Snippets > Clojure' 카테고리의 다른 글

[Project Euler] Problem 8  (0) 2010.10.14
clojure용 Syntax HighLighting을 위한 js, css  (0) 2010.10.08
Clojure Sample - Sequence  (0) 2010.10.08
Clojure Sample - Function  (0) 2010.10.08
Clojure Sample - Basic  (0) 2010.10.07
Posted by codevania
Code Snippets/Clojure2010. 10. 8. 19:31
SyntaxHighlighter에 Clojure용 js가 아직은 없어서, 간단하게 만들었습니다.
License는 'Dual licensed under the MIT and GPL licenses'이니 코드 공개하면 배포 및 수정이 가능하다고 하네요.
(http://www.opensource.org/licenses/mit-license.php http://likedawn.tistory.com/9)

shBrushClojure.js
현재는 간단하게 주석과 키워드만 적용 되어 있습니다.
shTemeDefault.css
string의 색을 변경했습니다. blue -> 분홍(?)

'Code Snippets > Clojure' 카테고리의 다른 글

[Project Euler] Problem 8  (0) 2010.10.14
[Project Euler] Problem 2  (0) 2010.10.11
Clojure Sample - Sequence  (0) 2010.10.08
Clojure Sample - Function  (0) 2010.10.08
Clojure Sample - Basic  (0) 2010.10.07
Posted by codevania
Code Snippets/Clojure2010. 10. 8. 03:17

http://en.wikibooks.org/wiki/Clojure_Programming/Examples/API_Examples/Sequences

'Code Snippets > Clojure' 카테고리의 다른 글

[Project Euler] Problem 8  (0) 2010.10.14
[Project Euler] Problem 2  (0) 2010.10.11
clojure용 Syntax HighLighting을 위한 js, css  (0) 2010.10.08
Clojure Sample - Function  (0) 2010.10.08
Clojure Sample - Basic  (0) 2010.10.07
Posted by codevania
Code Snippets/Clojure2010. 10. 8. 02:27

http://en.wikibooks.org/wiki/Clojure_Programming/Examples/API_Examples/Function_Tools


'Code Snippets > Clojure' 카테고리의 다른 글

[Project Euler] Problem 8  (0) 2010.10.14
[Project Euler] Problem 2  (0) 2010.10.11
clojure용 Syntax HighLighting을 위한 js, css  (0) 2010.10.08
Clojure Sample - Sequence  (0) 2010.10.08
Clojure Sample - Basic  (0) 2010.10.07
Posted by codevania
Code Snippets/Clojure2010. 10. 7. 18:17
http://en.wikibooks.org/wiki/Clojure_Programming/Examples/API_Examples

'Code Snippets > Clojure' 카테고리의 다른 글

[Project Euler] Problem 8  (0) 2010.10.14
[Project Euler] Problem 2  (0) 2010.10.11
clojure용 Syntax HighLighting을 위한 js, css  (0) 2010.10.08
Clojure Sample - Sequence  (0) 2010.10.08
Clojure Sample - Function  (0) 2010.10.08
Posted by codevania