프로그래밍/Groovy 34

스트링 배열 정렬(sorting)하기 with Groovy

[파일명: testSort.groovy]------------------------------------------------ List list = Arrays.asList(args) Collections.sort(list) println(list) ------------------------------------------------ 실행> groovy testSort.groovy 자전차 자전거 전동차 전차 전기자동차 ["자전거", "자전차", "전기자동차", "전동차", "전차"] [참고: 한글 문제] Groovy 버전 1.5.8 이나 1.6.1을 윈도우용 인스톨러로 설치한 경우에는 명령행 옵션으로 넣어준 한글을 잘 처리하지 못한다. Groovy 버전 1.5.8 이나 1.6.1을 zip 파일로 설치한..

Pollard's rho method 소개: 정수의 인수분해(factorizing integers) with Groovy

정의 (소수와 합성수) 1보다 큰 양의 정수 n에 대하여 (i) n = a * b 를 만족하고 1보다 큰 두 양의 정수 a와 b가 존재하면, n을 합성수(合成數, composite number)라고 한다. 참고로 이 경우, a, b 중에 적어도 하나는 sqrt(n) 보다 작거나 같다. 합성수의 예로는 4, 6, 9, 24, 143 등이 있다. (ii) n = a * b 를 만족하고 1보다 큰 두 양의 정수 a와 b가 존재하지 않으면, 즉 n을 두 양의 정수의 곱으로 표현하는 방법이 1*n과 n*1 두 가지 뿐이면, n을 소수(素數, prime number)라고 한다. 소수의 예로는 2, 3, 5, 7, 11 등이 있다. n이 소수인지 아닌지 확인하려면, n을 2 보다 크거나 같고 sqrt(n) 보다 작거..

손으로 계산하는 긴자리 곱셈표 만들기 with Groovy

초등학교 때 배우는 두 정수의 곱셈표를 만들어 주는 Groovy 소스이다. /** * Filename: makeMultTable.groovy * * Print a multiplication table. * * Execute: groovy makeMultTable.groovy 230 5100 * * Date: 2009/03/06 * Author: pkim (AT) scripts.pe.kr */ import java.io.*; import java.util.*; def printUsing() { println "Using: groovy makeMultTable.groovy [number1] [number2]" println "Print a multiplication table for the given two..

손으로 만드는 나눗셈 계산표 with Groovy

다음은 초등학교에서 배우는 나눗셈 계산표를 만들어주는 Groovy 소스 코드이다. 나눗셈 계산표를 완성하고 나서 약수, 배수 관계를 알려준다. /* * Filename: makeDivisionTable.groovy * * Purpose: Make a division table in a handy written form. * * Execute: groovy makeDivisionTable.groovy 12345 32 * groovy makeDivisionTable.groovy 500210 61 * * Date: 2008/05/15 * Author: PH Kim [ pkim ((AT)) scripts.pe.kr ] */ def printUsage() { println("사용법: groovy makeDivis..

클래스 상속(subclassing) 예제 with Groovy

Groovy 언어는 Java 언어와 달리 한 개의 소스 파일 내에 public 이든 아니든 여러 개의 클래스가 존재해도 된다. 또 클래스명과 다른 파일명으로 저장해도 된다. Groovy 언어도 Java, C 언어 처럼 대소문자 구별을 엄격히 하지만 public 클래스와 대소문자만 듵린 파일명으로 저장해도 아무 상관 없다. 다음은 두 개의 클래스로 구성되어 있다. Parent는 부모 클래스이고 Child는 Parent에서 상속 받은 자식 클래스이다. // Filename: testSubclassing.groovy public class Parent { private String name public Parent(String name) { // 생성자 this.name = name } public void ..

JDK 1.6 의 java.awt.Desktop 사용 예 with Java and Groovy

java.awt.Desktop 클래스는 JDK 1.6 부터 등장한 클래스이다. 이를 이용하면 시시템에 기본 웹 브라우저를 지정한 URL 주소로 직접 띄울 수 있다. 먼저, Java 소스 코드이다. 만일 파일 확장명을 groovy로 저장하면 실행 명령 groovy TestAWTDesktop.groovy URL주소 으로 소스 코드를 직접 실행시킬 수 있다. Java (또는 Groovy) 코드 import java.awt.Desktop; import java.io.*; import java.net.*; class TestAwtDesktop { public static void main(String[] args) { if (Desktop.isDesktopSupported()) { Desktop desktop =..

삼각형 출력 예제를 통한 여러 가지 소스 비교 with Groovy

콘솔에 삼각형 * * * * * * * * * * * * * * * ***************** 을 출력하는 Groovy 소스 코드를 작성해 보자. 이런 소스 코드의 작성은 학원이나 학교에서 프로그래밍 입문자에게 과제로 많이 주어지는 것 중의 하나이다. 코끼리를 보거나 만진 사람들이 저마다 그 생김새를 말할 때 제각기 다르게 표현할 수 있듯이 이런 소스 코드의 작성도 알고 보면 얼마든지 많은 방법이 있을 것이다. 여기서는 쉬운 코드 부터 작성해 보고 차츰차츰 소스를 바꾸어 가면서 Groovy 프로그래밍의 기초부분을 터득해 보기로 한다. 모든 소스 코드에서는 삼각형 출력 부분 담당 함수 printTriange()를 별도로 구현하였다. 우선 첫번 째 예제는 Groovy의 컨솔 출력 함수 println()..

Scanner 클래스를 이용한 웹 텍스트 문서 읽기 Groovy 예제

다음은 JDK 1.5 부터 등장한 java.util.Scanner 클래스를 이용하여 웹문서를 통째로 읽어들이는 Groovy 예제 소스 코드이다. 실행 예는 groovy readWebText.groovy http://groovy.codehaus.org 이다. (침고 자료: http://kr.sun.com/developers/techtips/c2004_1201.html#1 ) /* * Filename: readWebText.groovy */ def readFile(String filename) { def connection = new URL(filename).openConnection() def scanner = new Scanner(connection.getInputStream()).useDelimiter..

7비트 ASCII 코드표 만들기 예제 with Groovy

ASCII(애스키)란 American Standard Cpde for Information Interchange의 줄임글로서, 영문자에 기초한 문자 인코딩이다. 이 문자 인코딩에는 C0 제어문자(C0 control character)도 포함되어 있다. ( 참고: ASCII - Wikipedia, the free encyclopedia ) 다음은 7bit ASCII 코드표를 만들어 보여주는 Groovy 소스 코드이다. 소스 코드 중에 진법변환에 필요한 함수 convertAtoI(String, radix) convertItoA(long, radix) 의 구현도 포함되어 있다. /* * Filename: makeAsciiTable.groovy * Make a table of ascii codes. * * Ex..