Це схоже на спрощення дробів, але з датами!
Вхід вашої програми повинен мати форму, mm/dd
наприклад
3/4 //March 4
12/15 //December 15
1/1 // January 1
Ми припускаємо, що введення буде дійсним таким чином, що місяці містять у них таку кількість днів:
January 31
February 28
March 31
April 30
May 31
June 30
July 31
August 31
September 30
October 31
November 30
December 31
Завдання вашої програми полягає в тому, щоб взяти на себе припущену дійсну інформацію та повторно (або рекурсивно) спростити дату та на кожній ітерації (включаючи 0-ту) вивести дату з повним найменуванням місяця, як написано вище.
Наприклад:
Враховуючи вхід:
12/18
Виводить
December 18
June 9
February 3
Вхід, який уже спрощений, видає лише сам:
11/17
Виходи:
November 17
Назви місяців не можуть походити від функції на вашій мові. Рядки можуть бути заплутані, обчислені, як би вам не подобалося, але ви не можете використовувати стандартну функцію, як GetMonthString (4) або щось подібне, вам або потрібно написати цю функцію, або знайти спосіб вивести імена місяця, як описано.
Я не можу придумати жодних випадків, коли спрощена дата створює незаконну дату, але якщо ви коли-небудь створюєте незаконну дату по дорозі, виведіть:
Illegal Date
Але якщо ви впевнені, що цього не може статися, вам не потрібно мати код, що висвітлює цю справу. Дати, що відображаються, завжди повинні бути дійсними відповідно до описаного вище (безсумнівно, що місяці та дні починаються з 1).
Алгоритм:
На кожній ітерації ви ділите на найменше число, яке ділить чисельник і знаменник.
Тобто, ви знаходите всі числа такими, що, розділяючи і чисельник, і знаменник на це число, утворюється новий чисельник і знаменник, які є обома цілими числами (загальні фактори). Виберіть найменший і розділіть чисельник та знаменник окремо, щоб утворити новий дріб. Якщо єдине число, на яке можна поділити, - 1, то ви максимально спростили і зупиняєтесь.
Сподіваюся, це зрозуміло.
Будь-яка мова дозволена. Це Code Golf, найкоротший виграш коду!
12/18
до , 6/9
а не 4/6
(я не отримую все ітерації безлад ... коли я спрощую фракцію я отримав immedialtely в результаті спрощуються значення)?