프로그래밍/Groovy 34

진법(radix) 표 만들기 예제 with Groovy

컴퓨터 프로그래밍에서 꼭 알아두어야 할 주요 진법은 당연히 10진법, 2진법, 8진법, 16진법이다. 다음은 0 에서 15 까지의 정수를 10진법, 2진법, 8진법, 16진법의 표로 만들어 보여주는 Groovy 소스 코드이다. 진법 변환에 필요한 메소드로는 자바에 Integer.parseInt(String, int radix); Long.toString(long, int radix); 가 이미 있지만, 여기에 준하는 함수 convertAtoI(String, radix) convertItoA(long, radix) 를 Groovy 코드로 자체 작성하여 사용하였다. /* * Filename: makeRadixTable.groovy * Show the radix table with 10-, 2-, 8-, 16..

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

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

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

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

현재 시각 알아내기 for Groovy

현재 시각을 컨솔에 보여주는 간단한 애플리케이션의 Groovy 언어 소스 코드이다. UTC란 1970년 1월 1일 0시 0분 0초를 기준으로 하여 경과된 초 단위의 총 시간을 의미한다. * UTC(Universal Time Coordinated, 협정세계시, 協定世界時) /* * Filename: testCTime.groovy * * Execute: groovy testCTime.groovy */ public class TestCTimeApp { static def weekNames = [ "일", "월", "화", "수", "목", "금", "토" ].asImmutable() public static void main(String[] args) { Calendar now = new GregorianCa..

조립제법(Horner의 방법) 예제 (2) for Groovy

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

조립제법(Horner의 방법) 예제 (1) for Groovy

다항식 p(x) 를 1차 다항식 x - a 로 나눌 때의 몫과 나머지를 구하는 조립제법을 Groovy 언어로 구현해 보았다. 조립제법은 일명 Horner의 방법이라고도 불리우는데, 이는 x = a 에서 다항식 p(x)의 값 p(a)을 계산하는 가장 빠른 알고리즘이기도 하다. p(x) = (x - a)q(x) + r 여기서 r은 나머지이며 r = p(a) 이다. 또 q(x)는 몫이다. /* * Filename: TestSyntheticMethod.groovy * * Purpose: Find the quotient and remainder when some polynomial is * divided by a monic polynomial of the first degree. * 이 소스는 자바소스 TestS..

80컬럼 컨솔에 19단표 출력하기 예제 (2) for Groovy

다음 소스 코드는 80컬럼 컨솔에 19단표 출력하기 예제 (1) for Groovy 에 올려진 Groovy 소스 코드를 더 Groovy 소스 코드 답게 고친 것이다. Java 문법은 모든 구문에서 문장의 끝은 세미콜론(;)을 붙이게 되어 있다. 그러나 Groovy 문법은 문장의 끝을 알리는 세미콜론(;)을 붙여도 되고 안븉여도 된다. (단, 동일한 줄에 여러 개의 문장이 들어갈 때는 문장과 문장을 구별하는 세미콜론(;)을 사이사이에 넣어야 한다.) 즉, 문장의 끝을 알리는 세미콜론(;) 붙이기는 사용자의 개별 취향에 맡기는 옵션이다.(신택스 슈가, syntax sugar) 함수나 변수의 선언시에 Java 구문처럼 타입을 지정해도 되지만, 타입 대신 단지 def를 함수명이나 변수명 앞에 붙여도 된다. 이렇..

80컬럼 컨솔에 19단표 출력하기 예제 (1) for Groovy

아래는 Java용 소스파일 TestForForApp.java 를 (최소한의 수정으로) Groovy용으로 고친 것이다. 배열(array)을 생성하는 문법에 있어 Java 코드와 Groovy 코드가 서로 다르기 때문이다. 예를 들어, 정수 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 을 갖고 있는 int[] 타입의 배열을 생성하여 변수 arr에 저장하는(참조자 arr이 이를 참조하게 하는) Java 문법은 int[] arr = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 이다. 하지만 이에 대응하는 Groovy 문법은 int[] arr = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] as int[]; 이다. 즉. Groovy 문법은 리스트를 생성시..

Groovy 언어의 특징을 잘 나타내는 몇 가지 예제들

간단한 Groovy 스크립트:def name='World'; println "Hello $name!" 다소 복잡한 Groovy 스크립트: class Greet { def name Greet(who) { name = who[0].toUpperCase() + who[1..-1] } def salute() { println "Hello $name!" } } g = new Greet('world') // 객체 생성 g.salute() // "Hello World!"를 출력 Apache의 commons.lang 라이브러리를 이용한 스크립트 (한 개의 소스 파일로 저장한다.): class Greet { def name Greet() { } Greet(who) { name = who[0].toUpperCase() +..

(최대공약수 구하기) while... 반복문 예제 for Groovy

아래의 소스 코드는 Groovy로도 실행되는 Java 용 소스파일 TestWhileLoop.java를 Groovy 용으로 Groovy 언어 답게 고친 것이다. 소스 파일명: testWhile.groovy /* * Filename: testWhile.groovy * * Purpose: Example using the while loop syntax * while .... * * Execute: groovy testWhile.groovy -200 300 * */ // java.lang.Math 클래스를 명시적으로 import하는 구문이 없어도 // Groovy는 이 클래스를 자동으로 import한다. // 사용법 표시 def printUsage() { println 'Using: groovy testWhil..