125 lines
3.1 KiB
Factor
125 lines
3.1 KiB
Factor
! Copyright (C) 2008 Doug Coleman.
|
|
! See http://factorcode.org/license.txt for BSD license.
|
|
USING: help.markup help.syntax kernel math strings ;
|
|
IN: roman
|
|
|
|
HELP: >roman
|
|
{ $values { "n" integer } { "str" string } }
|
|
{ $description "Converts a number to its lower-case Roman Numeral equivalent." }
|
|
{ $notes "The range for this word is 1-3999, inclusive." }
|
|
{ $examples
|
|
{ $example "USING: io roman ;"
|
|
"56 >roman print"
|
|
"lvi"
|
|
}
|
|
} ;
|
|
|
|
HELP: >ROMAN
|
|
{ $values { "n" integer } { "str" string } }
|
|
{ $description "Converts a number to its upper-case Roman numeral equivalent." }
|
|
{ $notes "The range for this word is 1-3999, inclusive." }
|
|
{ $examples
|
|
{ $example "USING: io roman ;"
|
|
"56 >ROMAN print"
|
|
"LVI"
|
|
}
|
|
} ;
|
|
|
|
HELP: roman>
|
|
{ $values { "str" string } { "n" integer } }
|
|
{ $description "Converts a Roman numeral to an integer." }
|
|
{ $notes "The range for this word is i-mmmcmxcix, inclusive." }
|
|
{ $examples
|
|
{ $example "USING: prettyprint roman ;"
|
|
"\"lvi\" roman> ."
|
|
"56"
|
|
}
|
|
} ;
|
|
|
|
{ >roman >ROMAN roman> } related-words
|
|
|
|
HELP: roman+
|
|
{ $values { "x" string } { "y" string } { "z" string } }
|
|
{ $description "Adds two Roman numerals." }
|
|
{ $examples
|
|
{ $example "USING: io roman ;"
|
|
"\"v\" \"v\" roman+ print"
|
|
"x"
|
|
}
|
|
} ;
|
|
|
|
HELP: roman-
|
|
{ $values { "x" string } { "y" string } { "z" string } }
|
|
{ $description "Subtracts two Roman numerals." }
|
|
{ $examples
|
|
{ $example "USING: io roman ;"
|
|
"\"x\" \"v\" roman- print"
|
|
"v"
|
|
}
|
|
} ;
|
|
|
|
{ roman+ roman- } related-words
|
|
|
|
HELP: roman*
|
|
{ $values { "x" string } { "y" string } { "z" string } }
|
|
{ $description "Multiplies two Roman numerals." }
|
|
{ $examples
|
|
{ $example "USING: io roman ;"
|
|
"\"ii\" \"iii\" roman* print"
|
|
"vi"
|
|
}
|
|
} ;
|
|
|
|
HELP: roman/i
|
|
{ $values { "x" string } { "y" string } { "z" string } }
|
|
{ $description "Computes the integer division of two Roman numerals." }
|
|
{ $examples
|
|
{ $example "USING: io roman ;"
|
|
"\"v\" \"iv\" roman/i print"
|
|
"i"
|
|
}
|
|
} ;
|
|
|
|
HELP: roman/mod
|
|
{ $values { "x" string } { "y" string } { "z" string } { "w" string } }
|
|
{ $description "Computes the quotient and remainder of two Roman numerals." }
|
|
{ $examples
|
|
{ $example "USING: kernel io roman ;"
|
|
"\"v\" \"iv\" roman/mod [ print ] bi@"
|
|
"i\ni"
|
|
}
|
|
} ;
|
|
|
|
{ roman* roman/i roman/mod } related-words
|
|
|
|
HELP: ROMAN:
|
|
{ $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:"
|
|
{ $subsections POSTPONE: ROMAN: }
|
|
"Converting to Roman numerals:"
|
|
{ $subsections
|
|
>roman
|
|
>ROMAN
|
|
}
|
|
"Converting Roman numerals to integers:"
|
|
{ $subsections roman> }
|
|
"Roman numeral arithmetic:"
|
|
{ $subsections
|
|
roman+
|
|
roman-
|
|
roman*
|
|
roman/i
|
|
roman/mod
|
|
} ;
|
|
|
|
ABOUT: "roman"
|