Điều này tương tự với việc đơn giản hóa các phân số, nhưng với Ngày!
Đầu vào của chương trình của bạn phải có dạng mm/dd
Ví dụ
3/4 //March 4
12/15 //December 15
1/1 // January 1
Chúng tôi giả định rằng đầu vào sẽ hợp lệ sao cho các tháng có số ngày này trong đó:
January 31
February 28
March 31
April 30
May 31
June 30
July 31
August 31
September 30
October 31
November 30
December 31
Công việc của chương trình của bạn là lấy đầu vào hợp lệ giả định và lặp lại (hoặc đệ quy) đơn giản hóa ngày và tại mỗi lần lặp (bao gồm 0), xuất ngày với tên đầy đủ của tháng như được viết ở trên.
Ví dụ:
Đưa ra một đầu vào của:
12/18
Sẽ xuất
December 18
June 9
February 3
Một đầu vào đã được đơn giản hóa chỉ xuất ra chính nó:
11/17
Đầu ra:
November 17
Tên tháng không thể đến từ một chức năng trong ngôn ngữ của bạn. Các chuỗi có thể bị xáo trộn, tính toán, tuy nhiên bạn thích, nhưng bạn không thể sử dụng một hàm tiêu chuẩn như GetMonthString (4) hoặc một cái gì đó, bạn phải viết hàm đó hoặc tìm cách xuất tên tháng như mô tả.
Tôi không thể nghĩ về bất kỳ trường hợp nào mà ngày đơn giản hóa tạo ra một ngày bất hợp pháp, nhưng nếu bạn tạo ra một ngày bất hợp pháp trên đường đi, hãy xuất ra:
Illegal Date
Nhưng nếu bạn chắc chắn điều này không thể xảy ra, bạn không cần phải có mã bao gồm trường hợp này. Ngày xuất ra chỉ cần luôn có giá trị theo những gì được mô tả ở trên (không cần phải nói rằng tháng và ngày bắt đầu từ 1).
Thuật toán:
Ở mỗi lần lặp, bạn chia cho số nhỏ nhất chia tử số và mẫu số.
Nghĩa là, bạn tìm thấy tất cả các số sao cho việc chia cả tử số và mẫu số cho số này sẽ tạo ra một tử số và mẫu số mới là cả hai số nguyên (các thừa số chung). Chọn cái nhỏ nhất và chia riêng tử số và mẫu số để tạo ra một phân số mới. Nếu số duy nhất bạn có thể chia cho 1, thì bạn đã đơn giản hóa càng nhiều càng tốt và bạn dừng lại.
Tôi hy vọng điều này là rõ ràng.
Bất kỳ ngôn ngữ được cho phép. Đây là Code Golf, chiến thắng mã ngắn nhất!
12/18
đến 6/9
và không 4/6
(tôi không nhận được tất cả các mớ lặp lại ... khi tôi đơn giản hóa một phần tôi nhận được ngay lập tức giá trị đơn giản hóa kết quả)?