Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
21
Task/Middle-three-digits/Scala/middle-three-digits.scala
Normal file
21
Task/Middle-three-digits/Scala/middle-three-digits.scala
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
/**
|
||||
* Optionally return the middle three digits of an integer.
|
||||
*
|
||||
* @example List(123,12345,-789,1234,12) flatMap (middleThree(_)), returns: List(123, 234, 789)
|
||||
*/
|
||||
def middleThree( s:Int ) : Option[Int] = s.abs.toString match {
|
||||
case v if v.length % 2 == 0 => None // Middle three is undefined for even lengths
|
||||
case v if v.length < 3 => None
|
||||
case v =>
|
||||
val i = (v.length / 2) - 1
|
||||
Some( v.substring(i,i+3).toInt )
|
||||
}
|
||||
|
||||
|
||||
// A little test...
|
||||
val intVals = List(123,12345,1234567,987654321,10001,-10001,-123,-100,100,-12345,1,2,-1,-10,2002,-2002,0)
|
||||
|
||||
intVals map (middleThree(_)) map {
|
||||
case None => "No middle three"
|
||||
case Some(v) => "%03d".format(v) // Format the value, force leading zeroes
|
||||
} mkString("\n")
|
||||
Loading…
Add table
Add a link
Reference in a new issue