Giới thiệu kata

CodersDojoSweden, tổ chức ở Linköping, đã tìm kiếm một bài Kata mới đủ đơn giản dành cho người mới bắt đầu. Và Thomas Nilsson đã đưa ra bài toán Cộng số La Mã.

Mô tả bài toán

Là một kế toán, tôi muốn cộng các số La Mã tự động bởi vì làm việc đó bằng tay quá tẻ nhạt.” Cho các chữ số La Mã cơ sở ( I – 1, V – 5, X – 10, L – 50, C – 100, D – 500, M – 1000), tạo ra hai số La Mã và tính tổng của chúng. Ở Rome thời đó không có số Thập phân hay số nguyên, chúng ta cần làm việc đó với chuỗi kí tự.

Ví dụ: “XIV” + “LX” = “LXXIV”.

Dưới đây là nguyên tắc viết số La Mã:

  • Các chữ số được nối vào nhau thành số lớn hơn (VD: “XX” + “II” = “XXII”)
  • Nếu chữ số nhỏ hơn đứng trước chữ số lớn hơn, lấy chữ số lớn trừ số nhỏ (VD: “IV” là 4, “CM” là 900)
  • Với các chữ số La Mã là I, X, C bạn không thể có nhiều hơn 3 kí tự liên tiếp (VD: Không dùng “IIII” để biểu diễn số 4 mà dùng “IV”)
  • Với các chữ số La Mã là V, L, D bạn không thể có nhiều hơn 1 khi biểu diễn một số (VD: 1000 không biểu diễn là “DD” mà dùng “M” để biểu diễn)

Gợi ý

Nhóm chuỗi và nối chuỗi là chìa khóa để giải quyết bài Kata này. Nhưng hãy nhớ quy tắc về trường hợp số nhỏ hơn đứng trước số lớn hơn ở trên.(Nếu chữ số nhỏ hơn đứng trước chữ số lớn hơn, lấy chữ số lớn trừ số nhỏ, VD: “IV” là 4, “CM” là 900).

Gợi ý các ca kiểm thử (test case)

10 ca kiểm thử đầu tiên tương đối dễ tìm. Tôi không đưa ra chúng ở đây bởi vì tôi thấy rằng bài Kata này là một trong số những bài Kata rất tốt để thực hành việc tìm các ca kiểm thử.

Nguồn Kata: http://codingdojo.org/kata/RomanCalculator/


Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.