Another update from ingydotnet^djgoku
This commit is contained in:
parent
91df62d461
commit
948b86eafa
7604 changed files with 108452 additions and 22726 deletions
26
Task/Number-names/Scala/number-names-2.scala
Normal file
26
Task/Number-names/Scala/number-names-2.scala
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
import scala.collection.immutable.TreeMap
|
||||
|
||||
val NUMBERS = TreeMap(
|
||||
1 -> "one", 2 -> "two", 3 -> "three", 4 -> "four", 5 -> "five", 6 -> "six", 7 -> "seven", 8 -> "eight", 9 -> "nine",
|
||||
10 -> "ten", 11 -> "eleven", 12 -> "twelve", 13 -> "thirteen", 14 -> "fourteen", 15 -> "fifteen", 16 -> "sixteen",
|
||||
17 -> "seventeen", 18 -> "eighteen", 19 -> "nineteen", 20 -> "twenty", 30 -> "thirty", 40 -> "forty",
|
||||
50 -> "fifty", 60 -> "sixty", 70 -> "seventy", 80 -> "eighty", 90 -> "ninety"
|
||||
)
|
||||
|
||||
val HUNDREDS = TreeMap(
|
||||
100l -> "hundred", 1000l -> "thousand", 1000000l -> "million", 1000000000l -> "billion", 1000000000000l -> "trillion"
|
||||
)
|
||||
|
||||
def numberToString(number: Long) : String = {
|
||||
if (HUNDREDS.to(number).nonEmpty) {
|
||||
val (h, hundreds) = HUNDREDS.to(number).last
|
||||
val remainder = number % h
|
||||
numberToString(number / h) + hundreds + {if (remainder > 0) {if (remainder < 100) " and " else ", "} + numberToString(remainder) else " "}
|
||||
} else if (NUMBERS.to(number.toInt).nonEmpty) {
|
||||
val (n, word) = NUMBERS.to(number.toInt).last
|
||||
val remainder = number - n
|
||||
word + {if (remainder > 0 && remainder < 10) "-" else " "} + numberToString(remainder)
|
||||
} else {
|
||||
""
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue