Roman numerals/Decode: Difference between revisions

Add a declarative way of achieving the transformation
m (→‎{{header|Phix}}: use pygments, added cheat version)
(Add a declarative way of achieving the transformation)
 
Line 4,445:
2016
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}}==
1

edit