int groups = 7 //divide list up into groups by % (their remainder) Map a = (1..50).groupBy({ it % groups }) as TreeMap assert a.keySet() == (0..<groups) as Set assert a.keySet() == [0, 1, 2, 3, 4, 5, 6] as Set //pull out specific keys (plus vals) from a Map assert a.subMap(1) == [1:[1, 8, 15, 22, 29, 36, 43, 50]] assert a.subMap([1,2]) == [1:[1, 8, 15, 22, 29, 36, 43, 50], 2:[2, 9, 16, 23, 30, 37, 44]] assert a.subMap([1,2,99]) == [1:[1, 8, 15, 22, 29, 36, 43, 50], 2:[2, 9, 16, 23, 30, 37, 44], 99:null] assert a.subMap([1,2,99]).findAll({k,v->!!v}) == [1:[1, 8, 15, 22, 29, 36, 43, 50], 2:[2, 9, 16, 23, 30, 37, 44]] assert a.subMap((1..3)) == [1:[1, 8, 15, 22, 29, 36, 43, 50], 2:[2, 9, 16, 23, 30, 37, 44], 3:[3, 10, 17, 24, 31, 38, 45]]
Monday, July 29, 2013
GroupBy and SubMap
Intersect Lists and Maps
List a = [1,2,3] List b = [2,3,4] assert [2,3] == a.intersect(b) assert [1,2,3,4] == (a + b).unique() assert [1] == a - b assert [4] == b - a Map c = [a:1, b:2, c:44] Map d = [b:2, c:3] assert [b:2] == c.intersect(d) assert [a:1, b:2, c:3] == c + d assert [a:1, b:2, c:44] == d + c assert [a:1, c:44] == c - d assert [c:3] == d - c
Wednesday, July 24, 2013
Random String generator
//see: http://groovyconsole.appspot.com/edit/1032002 String generateToken(Integer size = 16){ String availableChars = 'ABCDEFGHIJLMNOPQRSTUVXZYabcdefghijlmnopqrstuvxzy0123456789!@#$%*_' Random generator = new Random() String token = "" size.times { token += availableChars[generator.nextInt(availableChars.length() - 1)] } return token } generateToken() generateToken(8)
Thursday, July 4, 2013
printf with Strings
//all formatting options: http://docs.oracle.com/javase/6/docs/api/java/util/Formatter.html#syntax //test padding on both sides of "HI"// (-8..8).each{ i -> if (i == 0) i = '' // avoid illegal printf syntax String f = "**%${i}s**" print ((f + ' --> ').padRight(15)) // just for debugging printf(f+'\n', "HI") } //Tic Tac Toe// List field = [["","x","o"],["","x",""],["o","",""]] field.eachWithIndex { line,index -> if(index > 0) { println "---+" * 2 + "---" } printf(" %-2s| %-2s| %-2s\n", line) }
Subscribe to:
Posts (Atom)