Как преобразовать целое число в римское число в PHP

Есть много вещей, о которых нужно подумать, когда вы пытаетесь преобразовать число в его римское представление, поэтому давайте подумаем об основах: меньшее число перед большим числом означает вычитание, а все остальное означает сложение. Например, IV означает 4, VI ​​означает 6. Вы не должны ставить более одного меньшего числа перед большим числом, чтобы вычесть. Например, IIV не будет означать 3, поэтому вы должны разделить единицы, десятки, сотни и тысячи как отдельные элементы. Это означает, что 99 — это XCIX, 90 + 9, но никогда не должно записываться как IC. Аналогично, 999 не может быть IM, а 1999 не может быть MIM. Способ следовать этой логике в программировании (по крайней мере, в смысле числа к римскому) может быть легко понят, однако путь от римского числа к числовым значениям более сложен, поэтому объяснение здесь не будет упомянуто. статья (однако мы сделаем это с библиотекой).

В этой статье мы покажем вам, как преобразовать числовое значение в его римское представление и наоборот, если вы используете для него библиотеку.

А. Использование одной функции

Если вы не можете использовать библиотеку или просто хотите сохранить простоту, добавьте в свою коллекцию следующую функцию. Эта функция преобразует ваше число (первый аргумент) в его римское представление:

Заметка

Большинство алгоритмов работают только в диапазоне от 1 до 4999, поэтому при большом числе сценарий завершится ошибкой.

 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
);
foreach ($lookup as $roman => $value)
{
// Look for number of matches
$matches = intval($n / $value);
// Concatenate characters
$result .= str_repeat($roman, $matches);
// Substract that from the number
$n = $n % $value;
}
return $result;
}

Просто включив эту функцию в свой проект, вы сможете использовать ее следующим образом:

И нам не нужно было включать библиотеку для такой функции.

Б. Использование библиотеки

Если вы хотите использовать библиотеку вместо написания своей собственной функции, мы рекомендуем вам использовать библиотеку римлян, очень простую библиотеку римских цифр PHP, которая позволяет преобразовывать целые числа в его римское представление и наоборот. Предпочтительным способом установки библиотеки является использование composer, поэтому вы можете запустить следующую команду

composer require wandersonwhcr/romans

После установки библиотеки вы сможете использовать ее пространство имен и использовать функции, которые помогут вам преобразовать числа. Для получения дополнительной информации об этой библиотеке, пожалуйста, посетите официальный репозиторий на Github здесь.

Библиотека включает в себя простую пару фильтров для преобразования строки с римским номером в целое число, которое представляет ввод в виде десятичного числа, а десятичное целое - в строку с римским числом в качестве результата.

Номер римскому

Чтобы преобразовать целое число в его римское представление, используйте IntToRoman класс, создайте экземпляр и вызовите метод фильтра из него. Этот метод ожидает в качестве первого аргумента число и возвращает строку с римским номером:

use Romans\Filter\IntToRoman;
$filter = new IntToRoman();
$result = $filter->filter(1999);
// MCMXCIX
echo $result;

Роман на номер

Чтобы преобразовать римское число в его числовое представление, используйте RomanToInt класс, создайте экземпляр и вызовите метод фильтра из него. Этот метод ожидает в качестве первого аргумента строку с римским номером и возвращает целое число с числовым значением:

use Romans\Filter\RomanToInt;
$filter = new RomanToInt();
$result = $filter->filter('MCMXCIX');
// 1999
echo $result;
Ссылка на основную публикацию
Adblock
detector