Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // 2) Число в римской записи перевести в десятичную.
- // 1 I
- // 4 IV
- // 5 V
- // 9 IX
- // 10 X
- // 40 XL
- // 50 L
- // 90 XC
- // 100 C
- // 400 CD
- // 500 D
- // 900 CM
- // 1000 M
- // http://ru.wikipedia.org/wiki/Римские_цифры
- import java.util.*
- inline fun convertSymbol(c : Char) =
- when(c) {
- 'I' -> 1
- 'V' -> 5
- 'X' -> 10
- 'L' -> 50
- 'C' -> 100
- 'D' -> 500
- 'M' -> 1000
- }
- class StringIterator(val s : String){
- inline fun next() = if (i < s.length) s[i++] else throw NoSuchElementException()
- inline fun hasNext() = i < s.length
- private var i = 0
- }
- inline fun String.iterator() = StringIterator(this)
- fun convert(s : String) : Int {
- var r = 0
- var prev = 0
- for (i in s) {
- val cur = convertSymbol(i)
- if (prev < cur)
- prev *= -1
- r += prev
- prev = cur
- }
- r += prev
- return r
- }
- // example input: I IV V IX X XL L XC C CD D CM M CDXCIX LDVLIV XDIX VDIV ID XCV VC XL MDCCCCLXXXXVIIII
- fun main(args : Array<String>) {
- for (s in args)
- System.out?.println("$s\t==>\t${convert(s)}")
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement