码迷,mamicode.com
首页 > 其他好文 > 详细

Project Euler:Problem 89 Roman numerals

时间:2015-07-24 22:42:34      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:project euler   正则表达式   

For a number written in Roman numerals to be considered valid there are basic rules which must be followed. Even though the rules allow some numbers to be expressed in more than one way there is always a "best" way of writing a particular number.

For example, it would appear that there are at least six ways of writing the number sixteen:

IIIIIIIIIIIIIIII
VIIIIIIIIIII
VVIIIIII
XIIIIII
VVVI
XVI

However, according to the rules only XIIIIII and XVI are valid, and the last example is considered to be the most efficient, as it uses the least number of numerals.

The 11K text file, roman.txt (right click and ‘Save Link/Target As...‘), contains one thousand numbers written in valid, but not necessarily minimal, Roman numerals; see About... Roman Numerals for the definitive rules for this problem.

Find the number of characters saved by writing each of these in their minimal form.

Note: You can assume that all the Roman numerals in the file contain no more than four consecutive identical units.



我想把我之前写的给删了是几个意思!!!!

化简为最简格式,主要是遇到DCCCC化简为CM,遇到LXXXX化简为XC,遇到VIIII化简为IX,CCCC化简为CD,XXXX化简为XL,IIII化简为IV

总之这些子串最后都可以化简为长度为2的字符

import re

ans=0
for line in open("roman.txt"):
    a=len(line)
    line=re.sub('DCCCC|LXXXX|VIIII|CCCC|XXXX|IIII','aa',line)
    b=len(line)
    ans=ans+a-b

print(ans)


版权声明:本文为博主原创文章,未经博主允许不得转载。

Project Euler:Problem 89 Roman numerals

标签:project euler   正则表达式   

原文地址:http://blog.csdn.net/youb11/article/details/47047409

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!