프로그래밍/Scala 16

Scala 언어로 평방근, 입방근, n제곱근 구하는 함수를 구현하고 테스트하기

음이 아닌 실수 A 의 평방근 sqrt(A) 를 구하는 Heron 의 방법: 반복함수 g(x) = (x + A/x) / 2 를 이용 실수 A 의 n제곱근 root(n, A) 를 구하는 Newton-Raphson 의 방법 반복함수 g(x) = ((n-1)*x + A/(x**(n - 1))) / n 를 이용 n = 2 인 경우에는 Newton-Raphson 의 방법이 Heron 의 방법과 동일하다. (참조. http://en.wikipedia.org/wiki/Newton's_method ) Scala 언어에는 지수 계산을 위한 함수 scala.math.pow(밑수, 지수) 가 이미 구현되어 있다. 하지만 차후 필요한 데가 있을 것 같아서 이와 유사한 n 제곱 함수와 n 제곱근 함수를 구현해 보았다. 지수가 ..

Scala 언어로 역삼각함수, 역쌍곡선함수 값을 구하는 예제

역삼각함수란 삼각함수의 역함수를 의미하고, 역쌍곡선함수란 쌍곡선함수의 역함수를 의미한다. 수학에서 sin 함수의 역함수는 arcsin 으로 표기되는데, Scala 언어에서는 scala.math.asin(Double) 메소드로 구현되어 있다. /* * Filename: testArcSine.scala * * Execute: scala -deprecation testArcSine.scala * * Or * * Compile: scalac -d. -deprecation testArcSine.scala * Execute: scala -classpath . -deprecation testArcSine * * Date: 2013. 1. 1. * Copyright (c) pkim _AT_ scripts.pe.kr *..

숫자 맞추기 게임 with Scala

Scala 언어는 명령형 언어와 함수형 언어의 특징을 모두 갖고 있으며, 그 구문 바탕은 Java의 것을 빌려 쓴다. 또한 Java 언어 처럼 타입에 엄격한(strictly typed) 언어이다.변수 선언이나 함수의 매개변수 표기하는 방식을 Visual Basic의 것과 비슷하다.Visual Basic에서 Dim이라는 키워드가 Scala 언어에서는 var이다.Scala 언어로 숫자 맞추기 게임을 작성해 보았다.소스에서 눈여겨볼 부분은 18째~20째 줄이다.      var r : BufferedReader = new BufferedReader(new InputStreamReader(System.in))      var sbuf = r.readLine()      var guess = Integer.par..

스트링 배열에서 스트링 찾기(find) with Scala

Scala 언어로는 리스트 대신 배열로 처리하였다. [파일명: testStringFindInArray.scala]------------------------------------------------ object TestStringFindInArray { def quickSort(arr: Array[String], start: Int, end: Int) { var i: Int = start var k: Int = end var pivot: String = "" if (end - start >= 1) { pivot = arr(start) while (k > i) { while (arr(i) pivot && k >= start && k >= i) { k -= 1 } if (k > i) { swap(arr, ..

대화형 모드의 진법(radix) 변환 예제 with Scala

다음은 대화형 모드(interactive mode)에서 진법 변환(radix conversion)하는 Scala 소스 코드이다. 메뉴는 주메뉴 Command: (S)et radix, (A)bout, (Q)uit or E(x)it 와 부메뉴 SubCommand: 'main()' to goto Main menu, 'exit()' or 'quit()' to exit 로 구성되어 있으며, 진법 변환의 핵심은 java.lang.Integer 클래스와 java.lang.Long 클래스의 정적 메소드 Integer.parseInt(String, int); java.lang.Long.toString(long, int); 울 이용하였으며, 지원되는 진법은 2진법에서 36진법 까지이다. 참고로 Java의 Long 타입과 ..

황금비율(golden ratio) 구하기 with Scala

다음은 이차방정식 x^2 - x - 1 = 0 의 양의 근 즉 황금비율(golden ratio)을 구하는 Scala애플리케이션 소스이다. 황금비율을 구하는 비례방정식은 1 : x = x : (x+1) 이며, 이를 이차방정식으로 표현한 것이 x^2 - x - 1 = 0 이다. See: http://en.wikipedia.org/wiki/Golden_ratio /* * Filename: testGoldenRatio.scala * 황금률(즉, 이차방정식 x^2 - x - 1 = 0 의 양의 근)을 계산한다. * * Execute: scala testGoldenRatio.scala * * Date: 2009/03/09 * Author: PH Kim [ pkim (AT) scripts.pe.kr ] */ def ..

현재 시각 알아내기 for Scala

현재 시각을 컨솔에 보여주는 간단한 애플리케이션의 Scala 언어 소스 코드이다. UTC란 1970년 1월 1일 0시 0분 0초를 기준으로 하여 경과된 초 단위의 총 시간을 의미한다. * UTC(Universal Time Coordinated, 협정세계시, 協定世界時) /* * Filename: testCTime.scala * * Compile: scalac -encoding MS949 testCTime.scala * Execute: scala TestCTimeApp */ import java.util._ object TestCTimeApp { var weekNames : Array[String] = Array( "일", "월", "화", "수", "목", "금", "토" ) def main(args: ..

조립제법(Horner의 방법) 예제 for Scala

다항식 p(x) 를 1차 다항식 x - a 로 나눌 때의 몫과 나머지를 구하는 조립제법을 Scala 언어로 구현해 보았다. 조립제법은 일명 Horner의 방법이라고도 불리우는데, 이는 x = a 에서 다항식 p(x)의 값 p(a)을 계산하는 가장 빠른 알고리즘이기도 하다. p(x) = (x - a)q(x) + r 여기서 r은 나머지이며 r = p(a) 이다. 또 q(x)는 몫이다. [참고] * 온라인으로 조립제법 표 만들기 손으로 계산하는 조립제법 표 * 온라인으로 구하는 다항식의 도함수: 조립제법을 이용한 다항식의 도함수 /* * Filename: testSyntheticDivision.scala * * Purpose: Find the quotient and remainder when some poly..

80컬럼 컨솔에 19단표 출력하기 예제 for Scala

다음은 Groovy 소스 코드를 Scala 소스 코드로 변경한 것이다. Scala 언어는 Java 언어 처럼 타입을 엄격히 지키는 언어이다. 하지만 Scala 언어는 ML, Haskell 언어 처럼 함수 프로그래밍을 적극 도입한 언어이다. /* * Filename: testForFor.scala * * Execute: scala testForFor.scala * * Date: 2008. 5. 18. */ def getDan(dan: Int) : Array[String] = { var t : Array[String] = new Array[String](20) var sa, sb, sval = "" for (j