PERL: БИБЛИОТЕКА ПРОГРАММИСТА


PERL: БИБЛИОТЕКА ПРОГРАММИСТА - стр. 82


Проблема

Требуется осуществить преобразование между обычными числами и числами в римской записи. Такая необходимость часто возникает при оформлении сносок и нумерации страниц в предисловиях.

Решение

Воспользуйтесь модулем Roman с CPAN:

use Roman;

$roman = roman($arabic);        # Преобразование

# в римскую запись
$arabic = arabic($roman) if isroman($roman); # Преобразование

#  из римской записи

Комментарий

Для преобразования арабских («обычных») чисел в римские эквиваленты в мо­дуле Roman предусмотрены две функции, Roman и roman. Первая выводит симво­лы в верхнем регистре, а вторая — в нижнем.

Модуль работает только с римскими числами от 1 до 3999 включительно. В рим­ской записи нет отрицательных чисел или нуля, а для числа 5000 (с помощью кото­рого представляется 4000) используется символ, не входящий в кодировку ASCII.

use Roman;

$roman_fifteen = roman(15);               # "xv"

print "Roman for fifteen is $roman_fifteen\n";

$arabic_fifteen = arabic($roman_fifteen);

print "Converted back, $roman_fifteen is $arabic_fifteen\n";

Roman for fifteen is xv

Converted back, xv is 15


76   Глава 2 • Числа

 Смотри также

Документация по модулю Roman; рецепт 6.23.

2.7. Генератор случайных чисел

Проблема

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

Решение

Воспользуйтесь функцией Perl rand. $random = int(  rand( $Y-$X+1  )  ) + $X;

Комментарий

Следующий фрагмент генерирует и выводит случайное число в интервале от 25 до 75 включительно:

$random = int(  rand(51)) + 25; print  "$random\n";

Функция rand возвращает дробное число от 0 (включительно) до заданно­го аргумента (не включается). Мы вызываем ее с аргументом 51, чтобы слу­чайное число было больше либо равно 0, но никогда не было бы равно 51 и выше. Затем от сгенерированного числа берется целая часть, что дает число от 0 до 50 включительно (функция int превращает 50,9999... в 50). К получен­ному числу прибавляется 25, что дает в результате число от 25 до 75 включи­тельно.




Начало  Назад  Вперед