Skip to content

Instantly share code, notes, and snippets.

@sirhc
Last active August 29, 2015 14:17
Show Gist options
  • Save sirhc/81253a60ec19c2e4dbac to your computer and use it in GitHub Desktop.
Save sirhc/81253a60ec19c2e4dbac to your computer and use it in GitHub Desktop.
OCPM Challenge, March 2015
#!/usr/bin/env perl
use v5.20;
use warnings;
use Text::Roman qw( roman2int );
my %fn = (
b => sub { chr oct "0b$_[0]" },
d => sub { chr $_[0] },
h => sub { chr hex $_[0] },
o => sub { chr oct $_[0] },
r => sub { chr roman2int($_[0]) },
);
while ( defined( my $line = readline ) ) {
chomp $line;
# Take 1.
#$line =~ s{([bdhor])([^;]*)(?:;|\z)}{ $fn{$1}->($2) }ge;
#say $line;
# Take 2.
print for map { $fn{ substr $_, 0, 1 }->( substr $_, 1 ) } split ';', $line;
print "\n";
}
__END__
http://www.metracom.com/march_challenge.html
The March Perl challenge by Tony Gasparovic
THE CHALLENGE:
Decode 10 famous quotes.
DETAILS:
The provided data DATA file contains five different data types separated by semicolons.
decimal
hexadecimal
octal
binary
roman numerals
You will have to convert each data type to a ASCII character CODE and print each line to the screen.
Example:
The first character of each field describes the data type: d->decimal o->octal h->hex b->binary r->roman numeral
This example converts to: 'test'
t e s t
o164;d101;rCXV;b01110100
t e e t
h74;o145;d115;o164
rLXV;h6e;b01100100;h20;rCXV;h6f;h2c;b00100000;b01101101;d121;h20;rCII;o145;o154;rCVIII;o157;d119;h20;b01000001;b01101101;b01100101;o162;d105;h63;b01100001;d110;d115;b00111010;o40;rXCVII;o163;h6b;rXXXII;o156;o157;d116;o40;o167;h68;o141;o164;rXXXII;rCXXI;o157;b01110101;rCXIV;d32;b01100011;h6f;d117;b01101110;o164;d114;o171;h20;h63;b01100001;b01101110;rXXXII;o144;b01101111;d32;o146;rCXI;d114;h20;rCXXI;d111;b01110101;o40;h2d;h20;b01100001;rCXV;o153;b00100000;rCXIX;d104;rXCVII;rCXVI;o40;o171;rCXI;h75;rXXXII;o143;o141;rCX;h20;d100;o157;rXXXII;o146;h6f;o162;b00100000;b01111001;rCXI;b01110101;rCXIV;d32;b01100011;h6f;o165;h6e;h74;d114;rCXXI;o56;rXXXII;b01001010;b01101111;d104;o156;rXXXII;h46;b00101110;o40;rLXXV;d101;d110;rCX;b01100101;o144;b01111001
d87;b01101000;rCI;h6e;d32;o164;h68;o145;d32;b01110000;d111;b01110111;rCI;o162;h20;o157;o146;b00100000;b01101100;d111;b01110110;rCI;b00100000;h6f;b01110110;b01100101;rCXIV;b01100011;rCXI;h6d;h65;b01110011;b00100000;d116;b01101000;d101;o40;rCVIII;h6f;o166;o145;b00100000;b01101111;d102;o40;b01110000;o157;rCXIX;h65;h72;d32;h74;rCIV;rCI;d32;h77;d111;b01110010;b01101100;o144;d32;o167;b01101001;b01101100;h6c;o40;rCVII;d110;o157;h77;b00100000;b01110000;b01100101;d97;b01100011;o145;rXLVI;o40;d74;rCV;rCIX;h69;d32;b01001000;o145;b01101110;b01100100;h72;rCV;h78
b01001110;d111;h20;d109;o141;d116;b01110100;b01100101;h72;rXXXII;b01110111;h68;rXCVII;h74;rXXXII;h70;o145;b01101111;rCXII;h6c;o145;o40;rCXVI;o145;h6c;rCVIII;h20;d121;o157;b01110101;h2c;b00100000;h77;d111;b01110010;rC;o163;d32;h61;rCX;h64;h20;b01101001;o144;b01100101;o141;h73;h20;rXCIX;d97;rCX;rXXXII;rXCIX;h68;h61;rCX;o147;d101;rXXXII;o164;h68;d101;o40;d119;o157;d114;o154;rC;rXLVI;o40;rLXXXII;o157;h62;o151;b01101110;o40;h57;d105;rCVIII;b01101100;h69;b01100001;d109;b01110011
o114;b01101111;o166;d101;d32;d105;b01110011;o40;d116;d104;d101;o40;d111;h6e;h6c;o171;d32;o146;rCXI;b01110010;o143;rCI;h20;d99;o141;h70;h61;d98;h6c;rCI;b00100000;rCXI;h66;rXXXII;d116;rCXIV;d97;rCX;b01110011;h66;o157;b01110010;b01101101;rCV;b01101110;h67;rXXXII;o141;b01101110;rXXXII;d101;b01101110;h65;h6d;rCXXI;rXXXII;d105;d110;h74;d111;b00100000;rCII;b01110010;d105;b01100101;o156;o144;rXLVI;rXXXII;d77;b01100001;d114;b01110100;rCV;b01101110;o40;d76;rCXVII;rCXVI;d104;h65;b01110010;h20;h4b;d105;rCX;o147;rXLIV;rXXXII;d74;d114;b00101110
h45;o151;h74;o150;d101;h72;o40;b01110111;b01110010;rCV;d116;o145;rXXXII;d115;d111;o155;rCI;b01110100;o150;b01101001;d110;rCIII;b00100000;b01110111;d111;o162;b01110100;b01101000;o40;rCXIV;o145;o141;d100;h69;b01101110;h67;h20;h6f;d114;d32;b01100100;d111;rXXXII;o163;rCXI;b01101101;d101;rCXVI;rCIV;rCV;rCX;rCIII;rXXXII;h77;o157;h72;h74;b01101000;o40;b01110111;rCXIV;b01101001;d116;h69;h6e;b01100111;rXLVI;rXXXII;b01000010;h65;rCX;b01101010;d97;o155;o151;o156;o40;rLXX;h72;d97;rCX;h6b;o154;o151;b01101110
d83;rCXI;b01101101;o145;d116;b01101001;rCIX;rCI;rCXV;o40;o151;o146;o40;o171;d111;h75;o40;h77;d97;rCX;d116;rXXXII;d116;o157;rXXXII;b01110011;rCI;h65;b00100000;b01100001;b00100000;b01100011;o150;d97;b01101110;o147;h65;rXXXII;b01100110;o157;o162;d32;rCXVI;h68;h65;o40;o142;rCI;o164;o164;rCI;rCXIV;b00101100;rXXXII;b01111001;b01101111;o165;o40;h68;o141;rCXVIII;o145;b00100000;h74;d111;d32;rCXVI;d97;h6b;o145;d32;d116;h68;d105;d110;b01100111;d115;o40;d105;rCX;o164;o157;b00100000;o171;h6f;o165;rCXIV;h20;d111;o167;d110;h20;d104;d97;rCX;d100;b01110011;b00101110;b00100000;rLXVII;b01101100;b01101001;rCX;rCXVI;o40;h45;d97;rCXV;o164;d119;d111;h6f;h64
h4f;o165;o162;o40;h67;o162;h65;h61;rCXVI;o145;b01110011;rCXVI;rXXXII;b01110111;h65;h61;d107;d110;h65;b01110011;rCXV;b00100000;rCVIII;b01101001;b01100101;b01110011;o40;o151;b01101110;h20;rCIII;o151;o166;h69;o156;b01100111;rXXXII;rCXVII;d112;d46;rXXXII;rLXXXIV;b01101000;d101;d32;h6d;d111;rCXV;b01110100;rXXXII;rXCIX;o145;d114;d116;rXCVII;o151;d110;rXXXII;o167;rXCVII;o171;o40;rCXVI;b01101111;o40;d115;o165;rXCIX;o143;d101;h65;o144;b00100000;rCV;d115;b00100000;rXCVII;d108;d119;d97;h79;d115;o40;d116;rCXI;rXXXII;o164;o162;o171;h20;o152;b01110101;rCXV;b01110100;o40;o157;h6e;h65;d32;d109;b01101111;b01110010;h65;h20;b01110100;b01101001;h6d;rCI;d46;rXXXII;d84;h68;b01101111;rCIX;d97;b01110011;h20;d65;b00101110;o40;h45;b01100100;h69;b01110011;rCXI;h6e
d108;b01101001;h76;d101;rXXXII;d108;rCXI;b01101110;o147;o40;h61;o156;b01100100;d32;o160;rCXIV;b01101111;rCXV;o160;h65;rCXIV;b00101110;o40;rLXXVI;b01100101;b01101111;d110;o141;h72;b01100100;h20;o116;b01101001;o155;h6f;d121
d77;b01101001;b01110011;d116;o141;h6b;h65;h73;rXXXII;o141;rCXIV;rCI;h20;h61;rCVIII;d119;d97;rCXXI;b01110011;rXXXII;b01100110;o157;o162;b01100111;b01101001;o166;h61;h62;rCVIII;d101;h2c;h20;o151;h66;rXXXII;d111;b01101110;o145;rXXXII;b01101000;h61;d115;o40;d116;b01101000;h65;d32;d99;b01101111;o165;d114;rXCVII;d103;h65;d32;rCXVI;o157;o40;d97;b01100100;d109;rCV;rCXVI;o40;b01110100;h68;d101;o155;b00101110;o40;b01000010;rCXIV;b01110101;b01100011;b01100101;b00100000;rLXXVI;d101;o145
h45;h64;b01110101;d99;d97;d116;h69;rCXI;h6e;o40;h69;d115;o40;h74;o150;rCI;d32;rCXII;h61;b01110011;rCXV;rCXII;d111;h72;b01110100;b00100000;d116;b01101111;d32;rCXVI;d104;h65;rXXXII;rCII;rCXVII;d116;h75;rCXIV;b01100101;d44;h20;rCII;b01101111;h72;o40;b01110100;h6f;b01101101;rCXI;o162;o162;d111;o167;d32;d98;b01100101;rCVIII;o157;b01101110;o147;h73;o40;d116;b01101111;o40;rCXVI;o150;h6f;o163;h65;o40;b01110111;h68;o157;b00100000;h70;h72;h65;b01110000;rXCVII;o162;d101;rXXXII;d102;rCXI;d114;b00100000;b01101001;d116;b00100000;d116;d111;o144;b01100001;rCXXI;h2e;o40;h4d;o141;o154;rXCIX;d111;o154;h6d;b00100000;b01011000
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment