summaryrefslogtreecommitdiff
path: root/problem17.ijs
diff options
context:
space:
mode:
authorPeter Mikkelsen <petermikkelsen10@gmail.com>2021-04-24 20:47:30 +0200
committerPeter Mikkelsen <petermikkelsen10@gmail.com>2021-04-24 20:47:30 +0200
commitde9c809ac871c143b5feff340d286842564fc62c (patch)
tree93350bad4ea380e6f42c69ac9184635eaf0ffbe0 /problem17.ijs
parente7a2b4cdfa686ba508b5c943ebe22caba9cc0c27 (diff)
Problem 17
Diffstat (limited to 'problem17.ijs')
-rw-r--r--problem17.ijs44
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