Wer ist nicht schon bei der Umrechung von Fahrenheit, Reaumur und Celsius verzweifelt. Letzten Winter war es sehr kalt und im nciht mehr existenten Minthouse Forum gab es Diskussionen bzgl der Umrechnungen. Deshalb habe ich ein kleines Groovy Programm geschrieben welches typische Groovyfunktionalitäten wie z.B. closures benutzt, um diese Umrechnungen vorzunehmen. Das Schöne an Groovy ist, das diese Programme automatisch unter der Decke den java Compiler aufrufen. Damit entfällt der typische Compile an Run Schritt bei Java und ermöglich schnellere Entwicklung und Test von Groovy Programmen. Einfach das Groovy Programm ändern und einfach wieder aufrufen. So wie man es von Python kennt. Vor dem Aufruf muss man allerdings erste Groovy installiert haben. Unter Linux geht das z.B. mit apt-get install groovy
Das Script kann auch hier runtergeladen werden.
#!/usr/bin/groovy
/*
Dieses Script entstand anlaesslich des kalten Wetters anno 2012
und der Diskussion im Minthouse bzgl Temperaturumrechungen
und ist dem Minthouse fuer den naechsten BibberWinter gewidmet
Aufruf: Bibber -48 20 55
Ergebnis: Liste aller umgerechneten Temperaturen fuer die Aufrufargumente
*/
import java.text.DecimalFormat
def C2F = { c -> [c * 1.8 + 32, "CF"] }
def F2C = { f -> [(f-32) * 5/9,"FC"] }
def C2R = { c -> [c * 0.8, "CR"] }
def R2C = { r -> [r * 1.25, "RC"] }
def F2R = { f -> [(f-32) * 4/9, "FR"] }
def R2F = { r -> [r * 2.25 + 32, "RF"] }
def conversions = [ C2F, C2R, F2C, F2R, R2C, R2F ]
def oneArgProcessed = false
args.each { arg ->
if (arg.isInteger()) {
arg=arg.toInteger()
if (oneArgProcessed)
println "-"
else
oneArgProcessed = true
conversions.each {
(v,c) = it(arg)
def value=new DecimalFormat("0.00").format(v)
(f,t)=c as List
println "$arg($f) = $value($t)"
}
}
else {
println "Invalid number $temp skipped"
}
}
