Tuesday, June 14, 2011

Roman no conversion

            function romanize($num) {
                $n = intval($num);
                $result = '';
                // Declare a lookup array that we will use to traverse the number:
                $lookup = array('M' => 1000, 'CM' => 900, 'D' => 500, 'CD' => 400,
                        'C' => 100, 'XC' => 90, 'L' => 50, 'XL' => 40,
                        'X' => 10, 'IX' => 9, 'V' => 5, 'IV' => 4, 'I' => 1);

                // Now, let's work our way through the values, building the string
                //  as we go:  At each step, divide out the maximum matches at this
                //  level, echo out that many characters and then drop the number
                //  down to the remainder and repeat:
                foreach ($lookup as $roman => $value) {
                // Determine the number of matches:
                $matches = intval($n / $value);

                // Store that many characters:
                $result .= str_repeat($roman, $matches);

                // Substract that from the number
                $n = $n % $value;
                }

                // The Roman numeral should be built, return it
                return $result;
            } 


            echo "\n 2005 = ", romanize(2005);
            echo "\n 1999 = ", romanize(1999);
            echo "\n 42 = ", romanize(42);


No comments:

Post a Comment