Jest to podobne do uproszczenia ułamków, ale z Daty!
Dane wejściowe programu muszą mieć postać mm/dd
Na przykład
3/4 //March 4
12/15 //December 15
1/1 // January 1
Zakładamy, że dane wejściowe będą prawidłowe, tak że miesiące mają w sobie następującą liczbę dni:
January 31
February 28
March 31
April 30
May 31
June 30
July 31
August 31
September 30
October 31
November 30
December 31
Zadaniem twojego programu jest przyjęcie założonych prawidłowych danych wejściowych i iteracyjnie (lub rekurencyjnie) uprościć datę, a na każdej iteracji (w tym 0) wypisz datę z pełną nazwą miesiąca, jak napisano powyżej.
Na przykład:
Biorąc pod uwagę:
12/18
Wyjdzie
December 18
June 9
February 3
Dane wejściowe, które są już uproszczone, same wyjściowe:
11/17
Wyjścia:
November 17
Nazwy miesięcy nie mogą pochodzić od funkcji w Twoim języku. Ciągi mogą być zaciemnione, obliczone, jak chcesz, ale nie możesz użyć standardowej funkcji, takiej jak GetMonthString (4) lub coś takiego, musisz albo napisać tę funkcję, albo znaleźć sposób na wyświetlenie nazw miesięcy zgodnie z opisem.
Nie mogę wymyślić żadnych przypadków, w których uproszczona data tworzy niezgodną z prawem datę, ale jeśli kiedykolwiek podasz niedozwoloną datę, wypisz:
Illegal Date
Ale jeśli masz pewność, że tak się nie stanie, nie musisz mieć kodu opisującego tę sprawę. Dane wyjściowe zawsze muszą być prawidłowe zgodnie z tym, co opisano powyżej (to oczywiste, że miesiące i dni zaczynają się od 1).
Algorytm:
Przy każdej iteracji dzielisz przez najmniejszą liczbę dzielącą licznik i mianownik.
Oznacza to, że wszystkie liczby są takie, że podzielenie zarówno licznika, jak i mianownika przez tę liczbę, daje nowy licznik i mianownik, które są liczbami całkowitymi (wspólne czynniki). Wybierz najmniejszy i osobno podziel licznik i mianownik, aby utworzyć nowy ułamek. Jeśli jedyną liczbą, którą możesz podzielić, jest 1, to uprościłeś jak najwięcej i przestajesz.
Mam nadzieję, że to jasne.
Dowolny język jest dozwolony. To jest Code Golf, wygrywa najkrótszy kod!
źródło
12/18
celu6/9
i nie4/6
(nie dostać cały bałagan iteracji ... kiedy uprościć ułamek dostałem immedialtely Uzyskana wartość uproszczony)?Odpowiedzi:
Galaretka , 59 bajtów
Wypróbuj online!
Jak to działa
źródło
Pyth -
11687 bajtówPakiet testowy .
źródło
TSQL 296 bajtów
Nie zezwalając na użycie standardowej nazwy danych kosztowało mnie dużo bajtów, jednak aby zaoszczędzić kilka bajtów, użyłem pierwszych 3 znaków domyślnego opisu daty (w formacie mon dd rrrr gg: miAM (lub PM)) i dodałem reszta miesiąca nazwa.
Gra w golfa:
Wypróbuj online
Nie golfowany:
źródło
'12/2'
drugą linię, czy na pewno mówisz mi prawdę?September
zSeptemper
.'temper','ober','ember','ember')+' '+LEFT(@d,2)