Roman numerals/Decode: Difference between revisions
Content added Content deleted
m (→{{header|Phix}}: use pygments, added cheat version) |
(Add a declarative way of achieving the transformation) |
||
Line 4,445: | Line 4,445: | ||
2016 |
2016 |
||
2017</pre> |
2017</pre> |
||
====Declarative==== |
|||
<syntaxhighlight lang="javascript"> |
|||
(() => { |
|||
function toNumeric(value) { |
|||
return value |
|||
.replace(/IV/, 'I'.repeat(4)) |
|||
.replace(/V/g, 'I'.repeat(5)) |
|||
.replace(/IX/, 'I'.repeat(9)) |
|||
.replace(/XC/, 'I'.repeat(90)) |
|||
.replace(/XL/, 'I'.repeat(40)) |
|||
.replace(/X/g, 'I'.repeat(10)) |
|||
.replace(/L/, 'I'.repeat(50)) |
|||
.replace(/CD/, 'I'.repeat(400)) |
|||
.replace(/CM/, 'I'.repeat(900)) |
|||
.replace(/C/g, 'I'.repeat(100)) |
|||
.replace(/D/g, 'I'.repeat(500)) |
|||
.replace(/M/g, 'I'.repeat(1000)) |
|||
.length; |
|||
} |
|||
const numerics = ["MMXVI", "MCMXC", "MMVIII", "MM", "MDCLXVI"] |
|||
.map(toNumeric); |
|||
console.log(numerics); |
|||
})(); |
|||
</syntaxhighlight> |
|||
{{Out}} |
|||
<pre> |
|||
[2016, 1990, 2008, 2000, 1666] |
|||
</pre> |
|||
=={{header|jq}}== |
=={{header|jq}}== |