HEX
Server: Apache
System: Linux srv1.prosuiteplus.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: prosuiteplus (1001)
PHP: 8.3.20
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/__pycache__/roman.cpython-38.pyc
U

�++Q�
�@s�dZdZdZdZdZddlZGdd�de�ZGd	d
�d
e�ZGdd�de�Z	Gd
d�de�Z
dZdd�Ze�
dej�Zdd�ZdS)z"Convert to and from Roman numeralsz&Mark Pilgrim (f8dy@diveintopython.org)z1.4z
8 August 2001agCopyright (c) 2001 Mark Pilgrim

This program is part of "Dive Into Python", a free Python tutorial for
experienced programmers.  Visit http://diveintopython.org/ for the
latest version.

This program is free software; you can redistribute it and/or modify
it under the terms of the Python 2.1.1 license, available at
http://www.python.org/2.1.1/license.html
�Nc@seZdZdS)�
RomanErrorN��__name__�
__module__�__qualname__�rr�'/usr/lib/python3/dist-packages/roman.pyrsrc@seZdZdS)�OutOfRangeErrorNrrrrrr	sr	c@seZdZdS)�NotIntegerErrorNrrrrrr
sr
c@seZdZdS)�InvalidRomanNumeralErrorNrrrrrrsr)
)�Mi�)ZCMi�)�Di�)ZCDi�)�C�d)ZXC�Z)�L�2)ZXL�()�X�
)ZIX�	)�V�)ZIV�)�I�cCs`t|t�std��d|kr&dks0ntd��d}tD]"\}}||kr8||7}||8}q@q8|S)z convert integer to Roman numeralzdecimals can not be convertedri�z%number out of range (must be 1..4999)�)�
isinstance�intr
r	�romanNumeralMap)�n�result�numeral�integerrrr�toRoman(s
r$a8
    ^                   # beginning of string
    M{0,4}              # thousands - 0 to 4 M's
    (CM|CD|D?C{0,3})    # hundreds - 900 (CM), 400 (CD), 0-300 (0 to 3 C's),
                        #            or 500-800 (D, followed by 0 to 3 C's)
    (XC|XL|L?X{0,3})    # tens - 90 (XC), 40 (XL), 0-30 (0 to 3 X's),
                        #        or 50-80 (L, followed by 0 to 3 X's)
    (IX|IV|V?I{0,3})    # ones - 9 (IX), 4 (IV), 0-3 (0 to 3 I's),
                        #        or 5-8 (V, followed by 0 to 3 I's)
    $                   # end of string
    cCsj|std��t�|�s"td|��d}d}tD]6\}}|||t|��|kr.||7}|t|�7}q6q.|S)z convert Roman numeral to integerzInput can not be blankzInvalid Roman numeral: %sr)r�romanNumeralPattern�searchr�len)�sr!�indexr"r#rrr�	fromRomanCs
r*)�__doc__�
__author__�__version__Z__date__Z
__copyright__�re�	Exceptionrr	r
rrr$�compile�VERBOSEr%r*rrrr�<module>s
�