Tạo hàm ngắn nhất để chuyển đổi một chuỗi các chữ số La Mã thành một số nguyên.
Các quy tắc cho mỗi chữ cái có thể được tìm thấy tại trang Wikipedia . Chữ cái trên 1.000 sẽ có dấu ngoặc đơn đặt xung quanh chúng để báo hiệu giá trị cao hơn của chúng.
Yêu cầu:
- Phải chuyển đổi chữ số La Mã từ 1 đến 500.000
- Phải hoàn thành trong vòng chưa đầy một phút
- Không sử dụng các hàm dựng sẵn có thể mang lại lợi thế (Ví dụ: Hàm chuyển đổi số La Mã thành số nguyên)
- Là một chức năng
Hàm không cần hỗ trợ phân số. Bất kỳ đầu vào không hợp lệ sẽ trả về số 0.
Chức năng ngắn nhất sẽ thắng. Trong trường hợp hòa, người nào có nhiều phiếu nhất sẽ thắng.
Các trường hợp thử nghiệm
Đầu vào
III
Đầu ra
3
Đầu vào
IIII
Đầu ra
0
Đầu vào
XVI
Đầu ra
16
Đầu vào
(C)(D)(L)MMI
Đầu ra
452001
Không đúng với tôi có nghĩa là bất hợp pháp và do đó sẽ trả về 0.
—
Martin York
@Anon: Số là một loại nhầm từ khi tôi thay đổi trường hợp thử nghiệm thứ ba ban đầu. Nó không cần phải hỗ trợ các hình thức không phù hợp, vì nó sẽ được coi là đầu vào không hợp lệ.
—
Kevin Brown
Thực hành tiêu chuẩn (và thông số kỹ thuật trùng lặp của câu hỏi này) dành cho đầu vào không hợp lệ là hành vi không xác định. Vì câu hỏi này đã bốn tuổi và chỉ có một câu trả lời, chúng ta có nên thay đổi yêu cầu không?
—
lirtosiast
@KevinBrown Tôi không thấy nguồn hoặc giải thích cho các chữ cái được ngoặc đơn. Tôi nghĩ bạn nên thay đổi thông số để khớp với codegolf.stackexchange.com/q/16254/43319 và sau đó các câu trả lời từ đó có thể được di chuyển ở đây.
—
Adám
(C)(D)(L)MMI
sẽ là 452.001. Làm thế nào bạn có được giá trị của bạn? Ngoài ra, điều này có cần hỗ trợ các hình thức "không phù hợp" (ví dụIC
thay vìXCIX
) không?