tasks a-s
This commit is contained in:
parent
47bf37c096
commit
b83f433714
12433 changed files with 156208 additions and 123 deletions
|
|
@ -0,0 +1,36 @@
|
|||
roman_to_demical = (s) ->
|
||||
# s is well-formed Roman Numeral >= I
|
||||
numbers =
|
||||
M: 1000
|
||||
D: 500
|
||||
C: 100
|
||||
L: 50
|
||||
X: 10
|
||||
V: 5
|
||||
I: 1
|
||||
|
||||
result = 0
|
||||
for c in s
|
||||
num = numbers[c]
|
||||
result += num
|
||||
if old_num < num
|
||||
# If old_num exists and is less than num, then
|
||||
# we need to subtract it twice, once because we
|
||||
# have already added it on the last pass, and twice
|
||||
# to conform to the Roman convention that XC = 90,
|
||||
# not 110.
|
||||
result -= 2 * old_num
|
||||
old_num = num
|
||||
result
|
||||
|
||||
tests =
|
||||
IV: 4
|
||||
XLII: 42
|
||||
MCMXC: 1990
|
||||
MMVIII: 2008
|
||||
MDCLXVI: 1666
|
||||
|
||||
for roman, expected of tests
|
||||
dec = roman_to_demical(roman)
|
||||
console.log "error" if dec != expected
|
||||
console.log "#{roman} = #{dec}"
|
||||
Loading…
Add table
Add a link
Reference in a new issue