diff options
author | Peter Mikkelsen <petermikkelsen10@gmail.com> | 2021-04-24 20:47:30 +0200 |
---|---|---|
committer | Peter Mikkelsen <petermikkelsen10@gmail.com> | 2021-04-24 20:47:30 +0200 |
commit | de9c809ac871c143b5feff340d286842564fc62c (patch) | |
tree | 93350bad4ea380e6f42c69ac9184635eaf0ffbe0 | |
parent | e7a2b4cdfa686ba508b5c943ebe22caba9cc0c27 (diff) |
Problem 17
-rw-r--r-- | problem17.ijs | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/problem17.ijs b/problem17.ijs new file mode 100644 index 0000000..78d7986 --- /dev/null +++ b/problem17.ijs @@ -0,0 +1,44 @@ +onesWords=: 'zero' ; 'one' ; 'two' ; 'three' ; 'four' ; 'five' ; 'six' ; 'seven' ; 'eight' ; 'nine' +tensWords=: 'twenty' ; 'thirty' ; 'forty' ; 'fifty' ; 'sixty' ; 'seventy' ; 'eighty' ; 'ninety' +teensWords=: 'ten' ; 'eleven' ; 'twelve' ; 'thirteen' ; 'fourteen' ; 'fifteen' ; 'sixteen' ; 'seventeen' ; 'eighteen' ; 'nineteen' + +hundredPart=: monad define +if. y=0 do. + '' +else. + (>y{onesWords), ' hundred ' +end. +) + +tenPart=: dyad define +if. x=0 do. + >y{onesWords +elseif. x=1 do. + >y{teensWords +elseif. (x>1)*.(y>0) do. + (>(x-2){tensWords),'-',>y{onesWords +elseif. y=0 do. + >(x-2){tensWords +end. +) + +num2text=: monad define + thousands=. <.y%1000 + y0=.y-1000*thousands + hundreds=. <.y0%100 + y1=.y0-100*hundreds + tens=. <.y1%10 + y2=.y1-10*tens + ones=. <.y2 + h =. hundredPart hundreds + t =. tens tenPart ones +if. thousands do. + 'one thousand' +elseif. (hundreds>0)*.y1>0 do. + h, 'and ', t +elseif. (hundreds>0)*.y1=0 do. + h +end. +) + +letterCount=: +/@(2&=)@(' -'&i.)@num2text
\ No newline at end of file |