in reply to Formatting Text
I discovered a relatively simple explanation for the algorithm here.use strict; use warnings; for (1..100) { print roman($_), "\n"; } BEGIN { my %roman = ( 1 => 'I', 4 => 'IV', 5 => 'V', 9 => 'IX', 10 => 'X', 40 => 'XL', 50 => 'L', 90 => 'XC', 100 => 'C', 400 => 'CD', 500 => 'D', 900 => 'CM', 1000 => 'M' ); my @roman = sort { $b <=> $a } keys %roman; sub roman { my ($n, $r) = $_[0]; for (@roman) { next if $_ > $n; $r .= $roman{$_} x ($n / $_); $n = $n % $_; } return $r; } }
|
|---|