Ver Mensaje Individual
  #9 (permalink)  
Antiguo 20/08/2010, 20:52
Avatar de mortiprogramador
mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 3 meses
Puntos: 214
Respuesta: Códigos - Reto Romanos

pateketrueke

Código PHP:
Ver original
  1. <?php
  2. function numberRoman($test)
  3. {
  4.   static $dec = array(
  5.     'I' => 1,
  6.     'V' => 5,
  7.     'X' => 10,
  8.     'L' => 50,
  9.     'C' => 100,
  10.     'D' => 500,
  11.     'M' => 1000,
  12.   ), $expand = array(
  13.     'CM' => 'DCCCC',
  14.     'CD' => 'CCCC',
  15.     'XC' => 'LXXXX',
  16.     'XL' => 'XXXX',
  17.     'IX' => 'VIIII',
  18.     'IV' => 'IIII',
  19.   );
  20.  
  21.   $output = 0;
  22.   $expr = strtr(strtoupper($test), $expand);
  23.   foreach (preg_split('//', $expr) as $i) $output += ! empty($dec[$i])? $dec[$i]: 0;
  24.   return $output;
  25. }
  26. function romanNumber($test)
  27. {
  28.   static $dec = array(
  29.     'M' => 1000,
  30.     'CM' => 900,
  31.     'D' => 500,
  32.     'CD' => 400,
  33.     'C' => 100,
  34.     'XC' => 90,
  35.     'L' => 50,
  36.     'XL' => 40,
  37.     'X' => 10,
  38.     'IX' => 9,
  39.     'V' => 5,
  40.     'IV' => 4,
  41.     'I' => 1,
  42.   );
  43.  
  44.   $output = '';
  45.   do
  46.   {
  47.     foreach ($dec as $letter => $num)
  48.     {
  49.       if ($num > $test) continue;
  50.       $output .= $letter;
  51.       $test -= $num;
  52.       break;
  53.     }
  54.   } while ($test > 0);
  55.   return $output;
  56. }
  57. ?>
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com