Forums: » Register « |  Free Tools |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support |

New Free Tools on Dev Shed!

#1
November 16th, 2007, 01:18 PM
 Dankelly07
Registered User

Join Date: Nov 2007
Posts: 1
Time spent in forums: 15 m 45 sec
Reputation Power: 0
Can anyone help?

Hi, I just need a little help with a problem Iam doing, I think I've almost figured it out I just need some help finishing it. Ive been asked to write a regular expression to see whether a string represents a valid roman numeral. So I did that pretty much..

I=1
V=5
X=10
L=50
C=100
D=500
M=1000

r1 = "M{0,1}"
r2 = "(CM|CD|D?C{0,3})"
r3 = "(XC|XL|L?X{0,3})"
r4 = "(IX|IV|V?I{0,3})"
pattern = "^#{r1}#{r2}#{r3}#{r4}\$"

roman = Regexp.new(pattern)

end

How would I go about testing this program, is there anything I need to add, to proceed from here?
Any help would be much appreciated,
Thanks,
Dan

#2
December 30th, 2007, 03:07 AM
 twostepted
Contributing User

Join Date: Mar 2004
Location: Central Washington (USA)
Posts: 518
Time spent in forums: 22 h 30 m 12 sec
Reputation Power: 10
You should try to look at the output of roman.inspect() or roman.to_yaml() will give you an idea of what the object that Regexp.new() has returned. That may help you to proceed.

#3
December 30th, 2007, 03:23 AM
 twostepted
Contributing User

Join Date: Mar 2004
Location: Central Washington (USA)
Posts: 518
Time spent in forums: 22 h 30 m 12 sec
Reputation Power: 10
I forgot to include that in order to test your example, you'll have to do:
Code:
```numeral = "XVIII"
roman.match(numeral)```

Also, you can evaluate a regexp using the =~ operator like this:
Code:
`"XVIII" =~ /romanRegexp/`

the results of the match are available in the global variables \$1, \$2, \$3, ...

Have a look at the documentation

 Viewing: Dev Shed Forums > Programming Languages > Ruby Programming > Can anyone help?