import java.util.regex.Matcher import java.util.regex.Pattern // http://codekata.pragprog.com/2007/01/kata_four_data_.html //println "Starte Groovy Kata - WeatherMunger" class WeatherData { def day; int max, min; int spread() { max - min }} data = [] def pattern = ~/\s+(\d+)\D+(\d+)\D+(\d+).*/ def file = new File("weather.dat") assert file.exists() file.eachLine{ line -> matcher = pattern.matcher(line); if (matcher.matches()) { def day = matcher.group(1) int max = Integer.valueOf(matcher.group(2)) int min = Integer.valueOf(matcher.group(3)) data << new WeatherData(day: day, max: max, min:min) } // andere Zeilen werden ignoriert... //else { println "Zeile konnte nicht gelesen werden: " + line } } assert data.size() == 30 data.sort { it.spread() }.each{ println String.format("Tag:%3s Spread:%3s Min:%3s Max:%3s", it.day, it.spread(), it.min, it.max) } //println "Groovy Kata - WeatherMunger - erfolgreich beendet!"