전체 글 725

두 자리 수 곱셈 계산 쉽게 하기

십의 자리수가 같고 1의 자리수를 합하면 10이 되는 두 자연수위 솝셈을 쉽고 빨리 계산하는 방법을 소개 한다. 25 75 81 63 19 x) 25 x) 75 x) 89 x) 67 x) 11 625 5625 7209 4221 209 1의 자리수를 곱하여 그 아래에 자리를 맞추어 적어둔다. 그 왼 쪽에는 10의 자리수 둘 중 하나만 플러스 1 하여 서로 곱한다. 예를 들어 25*25의 경우에는 10의 자리수가 2와 2인데 둘 중 하나만 플러스 1 하면 3과 2가 된다. 이 둘을 곱하면 6이다. 이를 또 그 밑에 1의 자리수 곱하여 적어둔 그 좌측에 자리를 맞추어 붙여주면 계산이 끝난다. 이 과정을 좀 더 상세하게 설명하면 25 x) 25 25

구구단 계산을 덧셈 뺄셈 만으로 하기

중학교 수학만 공부한 사람이면 누구나 아는 계산식 ab = ((a + b)^2 - (a - b)^2)/4 를 이용하는 곱셈 계산법에 대해서 알아 보자. n 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 G(n) 0 0 1 2 4 6 9 12 16 20 25 30 36 42 49 56 64 72 81 (위의 표에서 G(n) = n*n/4 = (n^2)/4 이다, ) G(n) = k^2 if n = 2k (짝수), G(n) = k(k+1) = k^2 + k if n = 2k + 1 (홀수) 임을 이용해도 된다. 이 때는 제곱수만 기억하고 있으면 된다. 예를 들어 8*7 의 값을 구한다고 하자. 먼저 8과 7의 합과 차를 구한다. 8 + 7 = 15 8 - 7 = 1 이다..

F# 프로그래밍에서 정수인지 부동소수점수인지 구분하기

필요한데가 많을 것 같아서 올려 놓는다. // See http://msdn.microsoft.com/en-us/library/dd233248.aspx let (|Integer|_|) (str: string) = let mutable intvalue = 0 if System.Int32.TryParse(str, &intvalue) then Some(intvalue) else None let (|Float|_|) (str: string) = let mutable floatvalue = 0.0 if System.Double.TryParse(str, &floatvalue) then Some(floatvalue) else None let parseNumeric str = match str with | Integer..

프로그래밍/F# 2010.07.12

F# 프로그래밍에서 한글 문제

F# 프로그래밍 중에 한글 출력을 시도하였다. 그러나 당연히 되리라고 믿었던 printfn 에 의한 한글 출력이 되지 않았다. printfn "한글" 이 한 줄 짜리 F# 소스를 컴파일하고 실행하면 ??? 가 출력된다. 소스를 UTF8 인코딩으로 저장해 보기도 하고, 명령창을 chcp 65001 하여 UTF8 창으로 바꾸어 보기도 하였지만 허사였다. 인터넷 검색을 해보아도 해결책을 찾지 못했다. 아마도 F# 언어를 사용하는 사람들은 적어도 한글을 안써도 되는 듯... (.NET에서 한글을 못 쓰면 문제가 많을텐데...) 그러나 알고 보면 쉬운 것. fsc 로 컴파일할 때 --codepage:숫자 옵션으로 인코딩 숫자(예를 들어 949)를 지정하면 된다. 우선 F# 소스를 하나 보자 // 파일명: hell..

프로그래밍/F# 2010.07.12

F# 언어로 dnAnalytics를 이용한 행렬의 LU 분해와 SVD 분해 연습

목적: http://stackoverflow.com/questions/1907709/a-simple-wrapper-for-f-to-do-matrix-operations 에 올려진 소스에서 String.spit 관련를 문제 해결하자. 테스트를 위해 필요한 자료: dnAnalytics F# Power Pack // 파일명: TestFSharpMatrix.fs (원래 소스) #r @"D:\WORK\tools\dnAnalytics_windows_x86\bin\dnAnalytics.dll" #r @"FSharp.PowerPack.dll" open dnAnalytics.LinearAlgebra open Microsoft.FSharp.Math open dnAnalytics.LinearAlgebra.Decomposit..

프로그래밍/F# 2010.07.08

F# 프로그래밍에서 String.split 가 없다고 불평할 때

목적: http://geekswithblogs.net/MarkPearl/archive/2010/04/02/creating-my-first-f-program-in-my-new-ldquoexpert-f.aspx 에 올려진 (실행되지 않는) F# 예제가 실행되도록 하자. // 파일명: testString.fs (에러가 많은 원래 소스) #light let wordCount text = let words = Split [' '] text let wordset = Set.ofList words let nWords = words.Length let nDups = words.Length - wordSet.Count (nWords, nDups) let showWordCount text = let nWords,nDups..

프로그래밍/F# 2010.07.08

Groovy 언어의 지수 연산자 ** 의 연산 진행 순서에 관한 문제

2**2**5 은 (2**2)**5 와 2**(2**5) 중에 어느 것과 같을까? 즉, 지수 연산자 **는 왼쪽에서 오른쪽으로(left to right) 진행할까? 아니면 오른쪽에서 왼쪽으로(right to left) 진행할까? 만일 2**2**5 == (2**2)**5 라면 그 결과는 2**10 과 같을 것이고, 만일 2**2**5 == 2**(2**5) 라면 그 결과는 2**32 과 같을 것이다. * 미리 결론을 말하면 Groovy 언어에서는 지수 계산의 순서가 다른 언어(Python. Ruby, Maxima 등)의 것과는 다르다는 것이다. 1. groovy 의 경우 groovysh 로 테스트하였다. Groovy Shell (1.7.3, JVM: 1.6.0_17) Type 'help' or '\h' ..

Java 언어로 함수 프로그래밍 미리 해보기

Java 7에 포함되기로 했다가 취소된 함수형 프로그래밍(closure) 미리 맛보기 관련 자료 [1] http://javac.info/ [2] http://stronglytypedblog.blogspot.com/2010/06/lambdas-in-java-preview-part-1-basics.html ) [3] http://www.infoq.com/articles/lambdas-java-analysis [4] http://wiki.java.net/bin/view/JDK/ClosuresSyntaxInJava7 [5] http://www.ibm.com/developerworks/java/library/j-jtp04247.html [6] http://www.java.net/pub/pq/242 [7] http..

C# 용 선형대수 & 수치해석 라이브러리 ALGLIB를 이용한 예제 테스트하기

1. 다운로드 http://www.alglib.net/ 에서 C#용 라이브러리 소스를 다운로드한다. 2. 다운로드한 파일의 압축을 적당한 디렉토리에 푼다. 3. 그 디렉토리로 가서 빌드한다. (옵션은 csc 와 mono 중에 택 1) build csc (빌드가 끝나면 out 디렉토리에 libalglib.dll 파일이 생성되어 있을 것이다.) 4. 빌드 후 테스트 (옵션은 csc 와 mono 중에 택 1) check csc all 5. 개별 테스트 (옵션 /reference 를 이용하여 dll 파일을 지정한다.) cd examples csc _demo_rcond_1.cs /reference:..\out\libalglib.dll _demo_rcond_1 csc _demo_ode_example1.cs /ref..

프로그래밍/C# 2010.07.02