Giới thiệu về Kata Số La Mã
Tôi không tham dự XP2001 của Kent Beck, nhưng tôi tin chắc rằng Kata này đã xuất hiện ở đó. Đây là [Video của Karl Scotland thực hiện Kata này trên Excel tại Agile 2008] và đây là [video của JonJagger thực hiện Kata trên Ruby sử dụng CyberDojo]
Cấp độ: Dễ
Mô tả vấn đề
Người la mã rất thông minh. Họ đã xâm chiếm và cai trị hầu hết Châu Âu trong suốt hàng trăm năm. Họ phát minh ra những con đường bê tông thẳng, thậm chí là cả bikinis[1]. Có một điều họ đã không khám phá ra là số không. Điều đó khiến việc ghi chép và đánh dấu những phát kiến trong lịch sử của họ gặp nhiều khó khăn, nhưng hệ thống số của họ vẫn được sử dụng cho đến ngày nay. Ví dụ đài BBC thường sử dụng dụng số La Mã để đề ngày tháng cho những chương trình của họ.
Người La Mã dùng các kí tự : I, V, X, L, C, D, M (dễ thấy những kí tự này có rất nhiều đường thẳng và do đó dễ dàng khắc lên những tấm bảng đá) để biểu diễn các số.
Kata này yêu cầu bạn viết 1 chức năng chuyển đổi 1 số thông thường sang 1 số La Mã
1 à I
10 à X
7 à VII.
vv.
Xem mô tả chi tiết của bài tập này ở [website tham khảo hữu ích], có bản cài đặt bằng javascript.
Không cần thiết chuyển đổi 1 số lớn hơn 3000 (bản thân người La Mã không có xu hướng đếm cao hơn)
Lưu ý rằng bạn không thể biểu diễn “IM” cho số 999.
Theo Wikipedia: Số La Mã hiện đại được viết theo quy tắc biểu diễn mỗi chữ số riêng biệt bắt đầu từ bên trái cùng và bỏ qua những số ký tự không. Để thấy điều này trong thực tế, hãy xem xét cách biểu diễn số 1990. Số La Mã của 1990 sẽ được biểu diễn bằng : 1000 = M, 900 = CM, 90 = XC ; kết quả là MCMXC. 2008 sẽ được viết là 2000 = MM, 8 = VIII ; 2008 = MMVIII.
Phần II của Kata
Viết một hàm để chuyển ngược lại: từ chuyển số La Mã về số bình thường
Trích dịch từ codingdojo.org
Người dịch: Trần Lê Hưng, Nguyễn Anh Tuấn (thành viên câu lạc bộ CocoDojo)
Có thể xem thêm trên wikipedia:
http://vi.wikipedia.org/wiki/S%E1%BB%91_La_M%C3%A3
Nếu viết 22-4-2020 thì ghi như thế nào ạ?? Cần ghi giúp ạ