11. Google Code Jam Exercise
Problem
The
aim
of
this
task
is
to
translate
a
language
into
a
new
language
called
Googlerese.
To
translate
we
take
any
message
and
replace
each
English
le<er
with
another
English
le<er.
This
mapping
is
one-‐to-‐one
and
onto,
which
means
that
the
same
input
le<er
always
gets
replaced
with
the
same
output
le<er,
and
different
input
le<ers
always
get
replaced
with
different
output
le<ers.
A
le<er
may
be
replaced
by
itself.
Spaces
are
leC
as-‐is.
For
example
(and
here
is
a
hint!),
the
translaIon
algorithm
includes
the
following
three
mappings:
'a'
-‐>
'y',
'o'
-‐>
'e',
and
'z'
-‐>
'q'.
This
means
that
"a
zoo"
will
become
"y
qee".
Sample
Input/Output
Input:
Case
#1:
ejp mysljylc kd kxveddknmc re jsicpdrysi
Case
#2:
rbcpc ypc rtcsra dkh wyfrepkym veddknkmkrkcd
Case
#3:
de kr kd eoya kw aej tysr re ujdr lkgc jv"
Output:
Case
#1:
our language is impossible to understand
Case
#2:
there are twenty six factorial possibilities
Case
#3:
so it is okay if you want to just give up"
14. Java8 will have Lambda Expressions
Java
root.listFiles((File f) -> f.isDirectory());"
"
//even with type inference"
root.listFiles(f -> f.isDirectory());"
"
//... and shorthand notation"
root.listFiles(File::isDirectory);"
"
"
"
Scala
root.listFiles(f:File => f.isDirectory)"
"
root.listFiles(f => f.isDirectory)"
"
root.listFiles(_.isDirectory)"
15. Java8 will have internal iteration with Lambda expressions
Java
double highestScore ="
" students.filter(Student s -> s.getGradYear() == 2011)"
" " .map(Student s -> s.getScore())"
" " .max();"
"
"
Scala
val highestScore = "
"studens.filter(s:Student => s.gradYear == 2011)"
" ".map(s:Student => s.score)"
" ".max"
16. Java8 will have default implementations for interfaces
(virtual extension methods)
Java
"
" "
" interface List<T> … {"
"// existing methods, plus"
"void sort(Comparator<? super T> cmp) "default { "
" "Collections.sort(this, cmp); }"
"}"
//however: no fields, no self types, "
//... And therefore ‘no multiple inheritance without the issues’"
Scala
Traits ..."
//with fields, self types"
//... And therefore: ‘multiple inheritance without the issues’"
17. Java8 will have support for parallel Collections
Java
"
"
Set<Album> favs ="
" albums.parallel()"
" .filter(a -> a.tracks.anyMatch(t -> (t.rating >= 4)))"
" .into(new ConcurrentHashSet<>());"
Scala
val favs = "
albums.par!
.filter(a => a.tracks.exists(t => t.rating >= 4)"
.toSet"
"
18. Delivery date
Java8
"
" 2013 !
in JDK 8!
Scala
"
"
since 2010 !
in JDK 1.5, 1.6, 1.7 !
"
With an impressive track record of many mission
critical applications by now ..."