Tuesday, June 15, 2010

First Groovy

หลังจากพี่ที่บริษัทสอนให้ใช้งาน groovy พร้อมกับให้เขียนโปรแกรมเล่น เพือรับ input แบบนี้
E:\grail\codes\exercises>groovy Classified.groovy 1 2 4 test data 5 11 by 34 me 27 28 23 3
แล้วให้ได้ output แบบนี้

Word:[test, data, by, me]
Number:[1, 2, 4, 5, 11, 34, 27, 28, 23, 3]
Prime: [2, 5, 11, 23, 3]
Special Character:[]

เราก็เลยได้ code มาแบบนี้ ที่เอามาลงก็เพราะชอบใจเป็นพิเศษกับส่วนที่เขียนหาจำนวนเฉพาะนี้ล่ะ
ทำง่ายดีจัง

println '\nWelcome to first groovy code';
def ltWords = [];
def ltNumbers = [];
def ltPrimes = [];
def ltSpecials = [];

def patternWord = ~/[a-zA-Z]+/;
def patternNumber = ~/[0-9]*/;


for (arg in this.args) {
if(match(patternWord,arg)){
ltWords.add(arg);
}else if(match(patternNumber,arg)){
ltNumbers.add(Integer.parseInt(arg));
}else{
ltSpecials.add(arg);
}
}

//get prime numbers
ltNumbers.each{ number -> (2..number).each{ test -> if(number%test==0 && number!=test){ ltPrimes.add(number) } } }
ltPrimes = ltNumbers - ltPrimes - 1;

println 'Word:' + ltWords;
println 'Number:' + ltNumbers;
println 'Prime: ' + ltPrimes;
println 'Special Character:' + ltSpecials;

def match(pattern, text){
return pattern.matcher(text).matches();
}



No comments: