Project Euler:Problem 89 Roman numerals

Posted gccbuaa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Project Euler:Problem 89 Roman numerals相关的知识,希望对你有一定的参考价值。

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,IIII变成IV,XXXX变成XL,CCCC变成CD

反正遇到这种这些字符最后都变成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的主要内容,如果未能解决你的问题,请参考以下文章

Problem 43 // Project Euler

Project Euler :Problem 54 Poker hands

Project Euler:Problem 77 Prime summations

Project Euler:Problem 76 Counting summations

Project Euler:Problem 34 Digit factorials

Project Euler:Problem 41 Pandigital prime