2008-11-11 14:02:51 -05:00
! Copyright (C) 2008 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
2009-03-27 20:55:34 -04:00
USING: help.markup help.syntax kernel math strings ;
2007-09-20 18:09:08 -04:00
IN: roman
HELP: >roman
2010-01-14 23:04:14 -05:00
{ $values { "n" integer } { "str" string } }
2007-09-20 18:09:08 -04:00
{ $description "Converts a number to its lower-case Roman Numeral equivalent." }
{ $notes "The range for this word is 1-3999, inclusive." }
2008-11-11 14:02:51 -05:00
{ $examples
{ $example "USING: io roman ;"
"56 >roman print"
"lvi"
}
} ;
2007-09-20 18:09:08 -04:00
HELP: >ROMAN
2010-01-14 23:04:14 -05:00
{ $values { "n" integer } { "str" string } }
2007-09-20 18:09:08 -04:00
{ $description "Converts a number to its upper-case Roman numeral equivalent." }
{ $notes "The range for this word is 1-3999, inclusive." }
2008-11-11 14:02:51 -05:00
{ $examples
{ $example "USING: io roman ;"
"56 >ROMAN print"
"LVI"
}
} ;
2007-09-20 18:09:08 -04:00
HELP: roman>
2010-01-14 23:04:14 -05:00
{ $values { "str" string } { "n" integer } }
2007-09-20 18:09:08 -04:00
{ $description "Converts a Roman numeral to an integer." }
{ $notes "The range for this word is i-mmmcmxcix, inclusive." }
2008-11-11 14:02:51 -05:00
{ $examples
{ $example "USING: prettyprint roman ;"
"\"lvi\" roman> ."
"56"
}
} ;
{ >roman >ROMAN roman> } related-words
2007-09-20 18:09:08 -04:00
HELP: roman+
2010-02-18 18:31:52 -05:00
{ $values { "x" string } { "y" string } { "z" string } }
2007-09-20 18:09:08 -04:00
{ $description "Adds two Roman numerals." }
2008-11-11 14:02:51 -05:00
{ $examples
{ $example "USING: io roman ;"
"\"v\" \"v\" roman+ print"
"x"
}
} ;
2007-09-20 18:09:08 -04:00
HELP: roman-
2010-02-18 18:31:52 -05:00
{ $values { "x" string } { "y" string } { "z" string } }
2007-09-20 18:09:08 -04:00
{ $description "Subtracts two Roman numerals." }
2008-11-11 14:02:51 -05:00
{ $examples
{ $example "USING: io roman ;"
"\"x\" \"v\" roman- print"
"v"
}
} ;
{ roman+ roman- } related-words
2007-09-20 18:09:08 -04:00
HELP: roman*
2010-02-18 18:31:52 -05:00
{ $values { "x" string } { "y" string } { "z" string } }
2007-09-20 18:09:08 -04:00
{ $description "Multiplies two Roman numerals." }
2008-11-11 14:02:51 -05:00
{ $examples
{ $example "USING: io roman ;"
"\"ii\" \"iii\" roman* print"
"vi"
}
} ;
2007-09-20 18:09:08 -04:00
HELP: roman/i
2010-02-18 18:31:52 -05:00
{ $values { "x" string } { "y" string } { "z" string } }
2007-09-20 18:09:08 -04:00
{ $description "Computes the integer division of two Roman numerals." }
2008-11-11 14:02:51 -05:00
{ $examples
{ $example "USING: io roman ;"
"\"v\" \"iv\" roman/i print"
"i"
}
} ;
2007-09-20 18:09:08 -04:00
HELP: roman/mod
2010-02-18 18:31:52 -05:00
{ $values { "x" string } { "y" string } { "z" string } { "w" string } }
2007-09-20 18:09:08 -04:00
{ $description "Computes the quotient and remainder of two Roman numerals." }
2008-11-11 14:02:51 -05:00
{ $examples
{ $example "USING: kernel io roman ;"
"\"v\" \"iv\" roman/mod [ print ] bi@"
"i\ni"
}
} ;
{ roman* roman/i roman/mod } related-words
2008-10-21 21:30:26 -04:00
HELP: ROMAN:
2008-11-11 14:02:51 -05:00
{ $description "A parsing word that reads the next token and converts it to an integer." }
{ $examples
{ $example "USING: prettyprint roman ;"
"ROMAN: v ."
"5"
}
} ;
ARTICLE: "roman" "Roman numerals"
"The " { $vocab-link "roman" } " vocabulary can convert numbers to and from the Roman numeral system and can perform arithmetic given Roman numerals as input." $nl
"A parsing word for literal Roman numerals:"
2009-10-01 15:56:36 -04:00
{ $subsections POSTPONE: ROMAN: }
2008-11-11 14:02:51 -05:00
"Converting to Roman numerals:"
2009-10-01 15:56:36 -04:00
{ $subsections
>roman
>ROMAN
}
2008-11-11 14:02:51 -05:00
"Converting Roman numerals to integers:"
2009-10-01 15:56:36 -04:00
{ $subsections roman> }
2008-11-11 14:02:51 -05:00
"Roman numeral arithmetic:"
2009-10-01 15:56:36 -04:00
{ $subsections
roman+
roman-
roman*
roman/i
roman/mod
} ;
2008-11-11 14:02:51 -05:00
ABOUT: "roman"