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!"