dutch numbers written fully


/ Published in: Ruby
Save to your folder(s)



Copy this code and paste it in your HTML
  1. #nederlandse_getallen.rb
  2. $stdout.sync = true
  3.  
  4. def nlgetal getal
  5. if getal < 0
  6. return 'Geef nou alsjeblieft gewoon een getal van 0 of hoger...'
  7. end
  8. if getal > 900
  9. return 'Lager dan, of gelijk aan 900 alsjeblieft.'
  10. end
  11. if getal == 0
  12. return 'nul'
  13. end
  14.  
  15. uitvoer = ''
  16.  
  17. eendeci = ['één', 'twee', 'drie', 'vier', 'vijf', 'zes', 'zeven', 'acht', 'negen']
  18. tweedeci = ['tien', 'twintig', 'dertig', 'veertig', 'vijftig', 'zestig', 'zeventig', 'tachtig', 'negentig']
  19. tieners = ['elf', 'twaalf', 'dertien', 'veertien', 'vijftien', 'zestien', 'zeventien', 'achttien', 'negentien']
  20. # driedeci = 'honderd'
  21. # vierdeci = 'duizend'
  22. # zesdeci = 'miljoen' # voor later
  23.  
  24. resterend = getal
  25.  
  26. #Hier wordt bepaald hoeveel er van welk decimaal zijn. Deze waarden gaan in: [honderdtallen, tientallen, eenheden]
  27. honderdtallen = resterend/100
  28. resterend = resterend -(honderdtallen*100)
  29. tientallen = resterend/10
  30. resterend = resterend - (tientallen*10)
  31. eenheden = resterend
  32.  
  33. #DERDE DECIMAAL
  34. #Altijd eerst de honderdtallen uitschrijven (in "uitvoer" stoppen)
  35. bij_uitvoer = ''
  36. bij_uitvoer = case honderdtallen
  37. when 0: ''
  38. when 1: 'honderd'
  39. when (2..9): eendeci[honderdtallen - 1] + 'honderd'
  40. end
  41.  
  42. uitvoer << bij_uitvoer.to_s
  43.  
  44. #EERSTE EN TWEEDE DECIMAAL
  45. #eenheden komen in het nederlands direct na de honderdtallen.
  46. #Maar niet in de "tieners". We moeten dus een tweedeling maken.
  47. #Er zijn een aantal mogelijke situaties
  48. #a. honderd zes (tientallen 0, eenheden >0)
  49. #b. honderd elf (tientallen 1)
  50. #c. honderd twintig (tientallen > 0, eenheden 0)
  51. #d. honderd zes en twintig (tientallen > 1, eenheden > 0)
  52. #
  53. #we moeten eerst scenario b uitwerken
  54. bij_uitvoer = ''
  55. bij_uitvoer = case
  56. when ((tientallen == 1) and (eenheden > 0)): tieners[eenheden - 1]
  57. #dan scenario c.
  58. when ((tientallen > 0) and (eenheden == 0)): tweedeci[tientallen - 1]
  59. #scenario a. moet uitgevoerd worden, ook als daarna d nog nodig is
  60. when ((eenheden > 0) and (tientallen == 0)): eendeci[eenheden - 1]
  61. #scenario d. uitvoeren, bij 2 en 3 moet er een trema op de tweeEntwintig
  62. when (((eenheden == 2) or (eenheden == 3)) and (tientallen > 1)): eendeci[eenheden - 1] + 'ën' + tweedeci[tientallen - 1]
  63. #scenario d. voor 1,4,5,6,7,8,9
  64. when ((eenheden == 1) or (eenheden > 3)): eendeci[eenheden - 1] + 'en' + tweedeci[tientallen - 1]
  65. end
  66. uitvoer << bij_uitvoer.to_s
  67.  
  68. return uitvoer
  69. end
  70.  
  71. for i in (1..899)
  72. puts nlgetal(i)
  73. end

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.