로마 숫자 문자열을 정수 로 변환하는 가장 짧은 함수를 작성하십시오 .
각 서한에 대한 규칙은 Wikipedia 페이지 에서 찾을 수 있습니다 . 1,000보다 큰 글자는 괄호로 묶여 더 높은 가치를 나타냅니다.
요구 사항 :
- 로마 숫자를 1에서 500,000으로 변환해야합니다.
- 1 분 안에 완료해야합니다
- 장점을 제공 할 수있는 내장 함수를 사용하지 않습니다 (예 : 로마 숫자를 정수로 변환하는 함수)
- 기능이다
이 함수는 분수를 지원할 필요가 없습니다. 유효하지 않은 입력은 숫자 0을 반환해야합니다.
최단 기능이 승리합니다. 동점 인 경우 가장 많은 표를 얻은 사람이 승리합니다.
테스트 사례
입력
III
산출
3
입력
IIII
산출
0
입력
XVI
산출
16
입력
(C)(D)(L)MMI
산출
452001
나에게 부적절하다는 것은 불법을 의미하므로 0을 반환해야합니다.
—
Martin York
@Anon : 원래 세 번째 테스트 사례를 변경했을 때의 숫자가 잘못되었습니다. 잘못된 입력으로 간주되므로 부적절한 양식을 지원할 필요가 없습니다.
—
케빈 브라운
표준 연습 (및이 질문의 복제 사양)은 유효하지 않은 입력이 정의되지 않은 동작이되도록합니다. 이 질문은 4 살이고 한 가지만 답변 했으므로 요구 사항을 변경해야합니까?
—
lirtosiast 2016 년
@KevinBrown 괄호 안의 글자에 대한 출처 나 설명이 없습니다. codegolf.stackexchange.com/q/16254/43319 와 일치하도록 사양을 변경해야하며 여기에서 답변을 마이그레이션 할 수 있다고 생각합니다 .
—
Adám
(C)(D)(L)MMI
452,001이 될 것입니다. 당신은 어떻게 가치를 얻었습니까? 또한 "잘못된"형식을 지원해야 합니까 (예 :IC
대신XCIX
)?