From 9a71423e741578de899e24466cdff08028f0f304 Mon Sep 17 00:00:00 2001 From: Peter Mikkelsen Date: Mon, 27 Sep 2021 14:30:01 +0200 Subject: Problem 89 --- problem89.ijs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 problem89.ijs diff --git a/problem89.ijs b/problem89.ijs new file mode 100644 index 0000000..1c46234 --- /dev/null +++ b/problem89.ijs @@ -0,0 +1,20 @@ +romans =: 'IVXLCDM' +decimals =: 1 5 10 50 100 500 1000 +romanToDecimal =: {{ +/ns*1,~_1+2*0<:2-/\ns=.decimals{~romans i.y }} +decimalToRoman =: {{ ;groupToRoman each (0&~:#]) ds*|.10^i.#ds=.(10&#.^:_1) y }} +groupToRoman =: {{ + closest =. {./:|y-decimals + diff =. y - closest{decimals + if. (diff<0) *. -.(|diff) e. decimals do. + closest =. closest - 1 + diff =. y - closest{decimals + end. + ch =. closest{romans + diff =. y - closest{decimals + sub =. {{ x,~groupToRoman y }} + keep =. [ + add =. {{ x,groupToRoman y }} + ch sub`keep`add@.(>:*diff) |diff +}} +saves =: #-#&decimalToRoman&romanToDecimal +problem89 =: +/;saves each 'b' freads 'p089_roman.txt' -- cgit v1.2.3