Y ya con este código dejo el tema por la paz. Lo pongo para que quede en el registro:
object Uniques { def main(a: Array[String]) { if (a.length != 1) { println("Need an argument to analyze") sys.exit(1) } else { findUniques(a(0)) match { case l if (l.isEmpty) => println("All characters are the same") case l => l foreach println } } } def findUniques(seq: String) = seq filter {c => seq.count(_ == c) == 1} map {c => "Unique instance found: " + c + " in position " + (seq.indexOf(c) + 1)} }
Y probando el caso en cuestión:
mmedina@yggdrasil-m:~/Programming/Scala/Tests$ scala Uniques "麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈塵麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈麈 麈麈麈麈麈麈麈麈麈" Unique instance found: 塵 in position 66
Hacerlo para que funcione con otros tipos de datos sin cambiar nada de código no es muy complicado.