Roman: Römische und Indisch-Arabische Zahlen konvertieren

| | Kommentare (0)

Das Modul Roman - Perl module for conversion between Roman and Arabic numerals - von Alexandr Ciornii vereinfacht die Umrechnung von Römische Zahlen in Indisch-Arabische Zahlen und umgekehrt.

Indisch-Arabische Zahlen in römische Zahlen umrechnen

Die automatisch exportierte Funktion Roman liefert römische Zahlen in Großbuchstaben. Wer kleine Buchstaben bevorzugt, verwendet statt dessen die (hier nicht gezeigte) Funktion roman.

#!/usr/bin/perl
use strict;
use warnings;
use Roman;

my @arabic_numbers = ( 1 .. 10 );

foreach my $arabic (@arabic_numbers) {
    my $roman = Roman($arabic);
    printf( "%-5s %-5s\n", $arabic, $roman );
}

Das Programm erzeugt folgende Ausgabe:

1     I    
2     II   
3     III  
4     IV   
5     V    
6     VI   
7     VII  
8     VIII 
9     IX   
10    X  

 

Römische Zahlen in Indisch-Arabische Zahlen umrechnen

Die ebenfalls automatisch exportiert Funktion arabic rechnet römische Zahlen in Indisch-Arabische Zahlen um. isroman prüft, ob es sich auch wirklich um eine gültige römische Zahl handelt.

#!/usr/bin/perl
use strict;
use warnings;
use Roman;

my @roman_numbers = qw( X XX L C CM MCD );

foreach my $roman (@roman_numbers) {
    if ( isroman($roman) ) {
        my $arabic = arabic($roman);
        printf( "%-5s %5s\n", $roman, $arabic );
    }
    else {
        warn "$roman ist keine gueltige roemische Zahl!\n";
    }
}

Das Programm erzeugt folgende Ausgabe:

X        10
XX       20
L        50
C       100
CM      900
MCD    1400

 

Datum in römischen Zahlen

Das nachfolgende Snippet habe ich im Blog von Ovid im Beitrag Dates in Latin gefunden und als Grundlage für ein kleines Programm verwendet:

#!/usr/bin/perl
use strict;
use warnings;

use Roman;
use DateTime;

my $dt = DateTime->new(
    year      => 2010,
    month     => 06,
    day       => 7,
    time_zone => 'Europe/Berlin',
);

my $date           = latin_date($dt);
my $workshop_count = Roman(12);

print
    qq~Der $workshop_count. Deutsche Perl-Workshop in Schorndorf (bei Stuttgart)
       startet am "$date".\n~;

sub latin_date {

    # Quelle: http://blogs.perl.org/users/ovid/2010/05/dates-in-latin.html
    my $datetime = shift;
    my @days     = (
        'Dies Dominica',
        'Dies Lunae',
        'Dies Martis',
        'Dies Mercurii',
        'Dies Iovis',
        'Dies Veneris',
        'Dies Saturni',
        'Dies Dominica',
    );
    my @months = (
        'Januarius', 'Februarius', 'Martius',   'Aprilis',
        'Maius',     'Junius',     'Julius',    'Augustus',
        'September', 'October',    'Novembris', 'December'
    );
    return join ' ' => $days[ $datetime->day_of_week ],
        roman( $datetime->day ), $months[ $datetime->month - 1 ],
        uc( roman( $datetime->year ) );
}

Das Programm erzeugt folgende Ausgabe:

Der XII. Deutsche Perl-Workshop in Schorndorf (bei Stuttgart) 
startet am "Dies Lunae vii Junius MMX".

 

Siehe auch:

Jetzt kommentieren

Über diese Seite

Diese Seite enthält einen einen einzelnen Eintrag von Thomas Fahle vom 31.05.10 10:45.

Modern Perl Ubuntu 10.04 LTS Desktop Live DVD ist der vorherige Eintrag in diesem Blog.

Screencast: Tim Bunce - State-of-the-art Profiling with Devel::NYTProf ist der nächste Eintrag in diesem Blog.

Aktuelle Einträge finden Sie auf der Startseite, alle Einträge in den Archiven.

Blog Roll

Powered by

Powered by Movable Type 5.2.10

Creative Commons-Lizenz

Creative Commons License
Dieses Weblog steht unter einer Creative Commons-Lizenz.