Rules | Leaderboard / Submit | Post-Mortem | Careers

Welcome to the Fonality Perl Golf Challenge


What is Perl Golf?

    Perl Golf is a competition to find the shortest (fewest keystrokes) Perl code to solve a given problem

Careers at Fonality

    If you're interested in a Perl position, engineering position, or any other careers at Fonality, check out our careers page here!
The Challenge:
    In a nutshell, this is a Roman Numeral Calculator.

    The program will take a single line of input containing upper-case Roman Numerals with the words " plus " or " minus " between them. The challenge is to create a Perl program in as few characters as possible to perform the calculation and print out the answer in Roman Numerals back to the screen.

    The program is a filter: it must read from STDIN, and send output to STDOUT.

    • Input will consist of a single line, which will match /\A[IVXLCDM]+( (plus|minus) [IVXLCDM]+){1,3}\n\z/. This means that the input will consist of three to seven words separated by single spaces.

    • The input will be between two and four upper-case Roman Numerals between I and MMMCMXCIX (1 to 3999) joined by plus or minus, all separated by a single space. Your program need not test the input for validity, and its behavior on invalid input is not important.

    • The output should be a single line, matching /\A[IVXLCDM]+\n\z/, and be the Roman Numeral representation of the calculation. The output will be between I (1) and MMMCMXCIX (3999).

    • Roman Numerals will always be in upper-case and in short-hand form. For example, you will always receive an input of "IV" rather than "IIII". You must also always output "IV" rather than "IIII".

    • At no time during the various math operations will a number be less than I (1) or greater than MMMCMXCIX (3999). That means you will never have a calculation such as "I minus V plus X". Even though the output is >= I (1) and <= MMMCMXCIX (3999), during the process (I minus V) becomes < I (1) which is not allowed.

    • You may not use any Perl modules.

    • Anyone, anywhere is able to play and win!

    • More information on Roman Numerals can be found at Wolfram MathWorld.

    All additional rules that apply to this challenge can be found here.

    Roman Numerals
    I = 1 C = 100
    V = 5 D = 500
    X = 10 M = 1000
    L = 50  

    A test program to test output of your program is provided here.


Rules:

    The basic rules are under "The Challenge" section of this page. Be sure to read all of the additional, generic Perl golf rules here.


Post-Mortem:

    You can view the post-mortem here.


Submitting:

    You can submit or update your program from the Leaderboard.


Deadline:

    The deadline for this challenge is January 1st, 2007, 11:59 pm PST.


Tiebreaker:

    The tiebreaker will favor programs with fewer alphanumeric, whitespace and underscore characters.


Test Program:

    A test program to test output of your program is provided here.


Examples:

    $ perl romancalc.pl
    in: I plus I
    out: II
    $ perl romancalc.pl
    in: MDCCCXXIV plus DCCVI
    out: MMDXXX
    $ perl romancalc.pl
    in: MCCXIII minus LXIV plus MMDXXX
    out: MMMDCLXXIX
    $ perl romancalc.pl
    in: MMXIX plus MCCCXCVI minus DCXCV plus CI
    out: MMDCCCXXI

Place

Prizes

1st

USD $350.00 (Cash)

2nd

USD $175.00 (Cash)

3rd

USD $125.00 (Cash)

4th

USD $75.00 (Cash)

5th

USD $50.00 (Cash)

6th

USD $25 Gift Certificate (Amazon)

7th

USD $25 Gift Certificate (Amazon)

8th

USD $25 Gift Certificate (Amazon)

9th

USD $25 Gift Certificate (Amazon)

10th

USD $25 Gift Certificate (Amazon)

11th

USD $25 Gift Certificate (Amazon)

12th

USD $25 Gift Certificate (Amazon)

13th

USD $25 Gift Certificate (Amazon)

14th

USD $25 Gift Certificate (Amazon)

15th

Fonality or trixbox T-Shirt

16th

Fonality or trixbox T-Shirt

17th

Fonality or trixbox T-Shirt

18th

Fonality or trixbox T-Shirt

19th

Fonality or trixbox T-Shirt

20th

Fonality or trixbox T-Shirt


Questions:



© Fonality 2004-2006