From de9c809ac871c143b5feff340d286842564fc62c Mon Sep 17 00:00:00 2001 From: Peter Mikkelsen Date: Sat, 24 Apr 2021 20:47:30 +0200 Subject: Problem 17 --- problem17.ijs | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 problem17.ijs 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 -- cgit v1.2.3