Curso de Raku / Apéndice 🆕 / Poniéndolo todo junto / Miniproyectos variados / Exercises / Números romanos
Solución: Números romanos
Aquí tienes una posible solución para la tarea.
Código
my @table =
1000 => 'M', 900 => 'CM', 500 => 'D', 400 => 'CD',
100 => 'C', 90 => 'XC', 50 => 'L', 40 => 'XL',
10 => 'X', 9 => 'IX', 5 => 'V', 4 => 'IV',
1 => 'I';
my $n = 1994;
my $roman = '';
for @table -> $pair {
while $n >= $pair.key {
$roman ~= $pair.value;
$n -= $pair.key;
}
}
say $roman;🦋 Puedes encontrar el código fuente en el archivo roman-numerals.raku.
Salida
MCMXCIVComentarios
La tabla enumera todos los símbolos en orden descendente de valor, incluidas las formas sustractivas como
CM(900) yIV(4), así que el algoritmo nunca tiene que tratarlas como casos especiales.Para cada entrada, el
whileañade el símbolo y resta su valor tantas veces como quepa, de modo que las piezas mayores se agotan primero.
Navegación del curso
← Números romanos | Una calculadora en notación polaca inversa →