develooper Front page | perl.golf | Postings from December 2012

Hospelian Arabic to Roman Transform (HART) shortened

Thread Next
From:
Andrew Savige
Date:
December 25, 2012 07:04
Subject:
Hospelian Arabic to Roman Transform (HART) shortened
Message ID:
1356419061.13965.YahooMailNeo@web160101.mail.bf1.yahoo.com
Continuing the thread from Jan 2007 after more than five years,
the famous "Hospelian Arabic to Roman Transform" aka HART, as
played by Ton in the Fonality Christmas golf challenge, has been
shortened by one stroke by primo. Test program showing Ton's two
original HART magic formulae and primo's improvement follows:

use strict;
use Roman;

sub ton1 { my $t = shift; my $s;
($s.=4x$_%1859^7)=~y/IVCXL91-80/XLMCDXVIII/d
for $t=~/./g; return $s }

sub ton2 { my $t = shift; my $s;
($s.=5x$_*8%29628)=~y/IVCXL426(-:/XLMCDIVX/d
for $t=~/./g; return $s }

sub pmo1 { my $t = shift; my $s;
($s.="32e$_"%72726)=~y/CLXVI60-9/MDCLXVIX/d
for $t=~/./g; return $s }

sub pmo2 { my $t = shift; my $s;
($s.="57e$_"%474976)=~y/CLXVI0-9/MDCLXIXV/d
for $t=~/./g; return $s }

for my $i (1..3999) {
    my $r  = uc roman($i);
    my $t1 = ton1($i);
    my $t2 = ton2($i);
    my $p1 = pmo1($i);
    my $p2 = pmo2($i);
    print "$i: $r\n";
    $r eq $t1 or die "t1: expected '$r' got '$t1'\n";
    $r eq $t2 or die "t2: expected '$r' got '$t2'\n";
    $r eq $p1 or die "p1: expected '$r' got '$p1'\n";
    $r eq $p2 or die "p2: expected '$r' got '$p2'\n";
}
print "all tests successful\n";

For more details: http://perlmonks.org/?node_id=1009126

/-\


Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About