import groovy.json.JsonSlurper import java.text.DecimalFormat import java.text.SimpleDateFormat void Zadanie1() { // a) def list1 = [ 'a', 'b', 'c'] def list2 = [ 1, 8, 23 ] // b) def list11 = list1.collect({ it * 2 }) def list12 = list2.collect({ it * 2 }) // a) println "A)" list1.each({ println it }) list2.each({ println it }) // b) println "B)" list11.each({ println it }) list12.each({ println it }) } void Zadanie2() { def pmap = [ Groovy: [ 'Asia', 'Jan' ], Grails: [ 'Asia', 'Jan', 'Stefan', 'Mirek' ], Java: [ 'Asia', 'Stefan', 'Mirek' ], JEE: [ 'Slawek', 'Stefan', 'Janusz' ] ] // a) println "A)" pmap.each({ println it.key + ": " + it.value.size }) // b) println "B)" pmap.findAll({ it.value.size > 2}).each({ println it }) // c) println "C)" def rmap = [:] pmap.each({ k, v -> v.each({ if (!rmap[it]) rmap[it] = [] rmap[it] += k }) }) rmap.each({ println it.key + ": " + it.value }) } void Zadanie3() { def datesString = "abc 1234 2003-34-23 23 67-78 452003-02-28" def matchedDates = datesString =~ /(\d+){4}-(\d+){2}-(\d+){2}/ def dateParser = new SimpleDateFormat("yyyy-MM-dd") dateParser.lenient = false // throw exception when date is invalid matchedDates.each { try { println dateParser.parse(it[0]) } catch(e) {} } } void Zadanie4() { def matchRealNumbersRegex = /((\+|-)?([0-9]+)([.][0-9]+)?)/ def matchPricesRegex = /((\+|-)?([0-9]+)([.][0-9]+)?[ ][P][L][N])/ // a) println "A)" def realNumbersString = "cośtam 3 4.5 wersja-0.3 podwersja 4 minus -8.5kg" def matchedRealNumbers = realNumbersString =~ matchRealNumbersRegex matchedRealNumbers.each { println it[0] } // b) println "B)" def pricesString = "jajka 5 PLN; mleko 3.5 PLN; chleb 2.13 PLN, a banany po 10 PLNów" def jsonSlurper = new JsonSlurper() def plnToEurRate = 1 / jsonSlurper .parse(new URL('http://api.nbp.pl/api/exchangerates/rates/A/EUR?format=json'))["rates"]["mid"][0]; println "Kurs PLN-EUR: $plnToEurRate" def decimalFormatter = new DecimalFormat("###,##0.00"); def euroPricesString = pricesString.replaceAll(matchPricesRegex, { def price = (it[0] =~ matchRealNumbersRegex)[0][0] as BigDecimal return decimalFormatter.format(price * plnToEurRate) + " EUR" }) println pricesString println euroPricesString } Zadanie1() Zadanie2() Zadanie3() Zadanie4()