Advertisement
Guest User

Untitled

a guest
Jan 19th, 2017
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.70 KB | None | 0 0
  1. package ProjectEuler
  2.  
  3. /**
  4. * Created by Mahesh Nema on 19-01-2017.
  5. */
  6. // Problem 17 Number letter counts
  7.  
  8. /*
  9. If the numbers 1 to 5 are written out in words: one, two, three, four, five, then there are 3 + 3 + 5 + 4 + 4 = 19 letters used in total.
  10.  
  11. If all the numbers from 1 to 1000 (one thousand) inclusive were written out in words, how many letters would be used?
  12.  
  13. NOTE: Do not count spaces or hyphens. For example, 342 (three hundred and forty-two) contains 23 letters and 115 (one hundred and fifteen)
  14. contains 20 letters. The use of "and" when writing out numbers is in compliance with British usage.
  15. */
  16. object Euler17 extends App {
  17. val ones = List("", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine")
  18. val tens = List("", "ten", "twenty", "thirt", "Fourty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety")
  19. val eleveToNineteen = List("Eleven", "Twelve", "Thirteen", "Fourteen", "Fiveteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen")
  20.  
  21. def twoDigit(num: Int) = {
  22. if (num / 10 == 0)
  23. ones(num)
  24. else if (num > 10 && num < 20)
  25. eleveToNineteen(num % 11)
  26. else {
  27. val tensPlace = num / 10
  28. val onesPalce = num % 10
  29. s"${tens(tensPlace)} ${ones(onesPalce)}"
  30. }
  31. }
  32.  
  33. def threeDigit(num: Int) = {
  34. if (num / 100 == 0) {
  35. twoDigit(num)
  36. } else {
  37. val twoDigits = twoDigit(num % 100)
  38. s"${ones(num / 100)} hundred" + " " + {
  39. if (twoDigits.nonEmpty) {
  40. "and"
  41. } else {
  42. ""
  43. }
  44. } + twoDigits
  45. }
  46. }
  47. def number(num:Int) ={
  48. if (num / 1000 == 0) {
  49. threeDigit(num)
  50. } else {
  51. "One thousand"
  52. }
  53. }
  54. println((1 to 1000).map(number(_).filter(_ != ' ').length).sum)
  55.  
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement