Biorąc pod uwagę liczbę 1 ≤ n ≤ 365, wyślij n-ty dzień roku w formacie „Dzień-miesiąc”. Na przykład, biorąc pod uwagę 1, powinieneś wypisać „1 stycznia”, bez „z”.
Zostanie użyty kalendarz gregoriański, a program nie powinien uwzględniać lat przestępnych, więc twój program nigdy nie powinien wypisywać „29 lutego” w żadnych okolicznościach. Można zastosować dowolną metodę, o ile jest ona zgodna ze wspomnianym wcześniej formatem „Dzień-miesiąc”. Twój program powinien również poprawnie wypisywać liczby porządkowe, co oznacza, że zawsze powinien wypisywać odpowiednio 1., 2., 3., odpowiednio 1, 2 lub 3 liczby dzienne dla każdego wejścia. Dopuszczalne są spacje wiodące lub inne wcięcia.
To jest golf golfowy, więc wygrywa najkrótsze rozwiązanie postaci.
Przypadki testowe:
1 gives 1st January
2 gives 2nd January
3 gives 3rd January
365 gives 31st December
60 gives 1st March
11 gives 11th January
11
(11 th stycznia) i21
(21 st stycznia) do przypadków testowych.123=
to część wymaganej wydajności. Lub po prostu edytuj przypadki testowe, aby przeczytać coś w stylu:365
daje31st December
Odpowiedzi:
PHP ,
38403028 bajtówWypróbuj online!
Uruchom z danymi
php -nF
wejściowymi pochodzi zSTDIN
. Przykład (powyższy skrypt o nazwiey.php
):Wyjaśnienie
Zbuduj znacznik czasu epoki dla pożądanego dnia w 1970 r. (Dogodnie nie rok przestępny), mnożąc
day number * number of seconds per day
(86400). Dałoby to jednak o jeden dzień wyższą wartość, dlatego pomnożymy ją przeznumber of seconds in a day - 1
(86399), co dla zakresu liczb wejściowych (1 ≤ n ≤365) spowoduje oznaczenie czasu końca każdego poprawnego dnia. Następnie skorzystaj z wbudowanego formatowania daty PHP dla danych wyjściowych.źródło
-n
konieczne?Galaretka ,
79 7877 bajtów-1 naprawiający błąd :) (nie powinien wstępnie transponować w celu znalezienia indeksu, powinien być po odwróceniu, ale wtedy możemy ogonić zamiast głowy)
-1 używając odbicia (
⁽©ṅB+30_2¦2
->⁽0ṗb4+28m0
)Pełny program, który drukuje wynik
Wypróbuj online!
W jaki sposób?
zaktualizuje to później ...
źródło
"thstndrd"
podzielonym na części o rozmiarze 2 (.•oθ2(w•2ô
), więc dzięki. :)C # (interaktywny kompilator Visual C #) ,
11511310998 bajtówDzięki @someone za oszczędność 9 bajtów
Wypróbuj online!
źródło
.code.tio(2,22): error CS0165: Use of unassigned local variable 'p'
Wygląda na to, że struct nie działa.var g=new DateTime().AddDays(n-1)
działa jednakPython 3.8 (wersja wstępna) , 112 bajtów
Wypróbuj online!
Co dziwne, nie muszę nawiasować
d:=(t:=gmtime(~-x*86400)
, prawdopodobnie dlatego, że interpreter sprawdza tylko, czy()
wokół wyrażenia przypisania są znaki, a nie, czy samo wyrażenie jest w nawiasie.-2 dzięki gwaugh .
-5 dzięki xnor .
źródło
Perl 6 ,
166161 bajtówWypróbuj online!
Twarde kody wszystkich nazw miesięcy, które zajmują większość miejsca. Człowieku, Perl 6 naprawdę potrzebuje odpowiedniego formatyzatora daty.
źródło
Hack,
1155939 bajtówPonieważ @gwaugh doszedł do tego samego rozwiązania, co moje, kiedy grałem w golfa, zamiast tego zamieszczam to w Hack :).
źródło
mktime()
wywołaniu, w przeciwnym razie zwróci on nieprawidłowy wynik, jeśli zostanie uruchomiony w roku przestępnym. (musiałem zrobić z moją odpowiedzią).JavaScript (ES6),
117113 bajtówZaoszczędź 4 bajty dzięki @tsh
Wypróbuj online!
Skomentował
Bez wbudowanej daty, 188 bajtów
Wypróbuj online!
źródło
0
będzie działało jak użycie"en"
. A zmiana natoLocaleString
oszczędziłaby 4 bajty. 110 bajtówtoLocaleString
to, że korzysta z domyślnych ustawień systemu, gdy przekazuje nierozpoznany ciąg znaków lub wartość liczbową. Może to być wszystko. Ten parametr jest zasadniczo nieskuteczny w instancji TIO, ponieważ i tak instalowane są tylko angielskie lokalizacje .Smalltalk, 126 bajtów
źródło
11th,12th,13th
? Jeśli poprawnie odczytam, podziel liczbę całkowitą przez 10, ale to by oznaczało, że to by się zakończyło11st,12nd,13rd
, chyba że coś innego w kodzie naprawi to, gdy nie jestem tego świadomy.C # (interaktywny kompilator Visual C #) ,
141139133124122 bajtówDzięki Arnauldowi za szybszą metodę usuwania 11,12,13-tego oszczędzania 4 bajtów
Wypróbuj online!
źródło
a=>{var d=s.AddDays(a-1);int x=d.Day,m=x%30%20;return x+"thstndrd"[(m<4?m*2:0)..2]+$" {d:MMMM}";};DateTime s
Kompilator interaktywny nie obsługuje obecnie zmiany poziomu języka na „podgląd”.DataTime s
R ,
158134 bajtów-24 bajty @Nick Kennedy za grę w golfa w „st”, „nd”, „rd” i „th”. Dzięki!
Wypróbuj online!
źródło
`if`
lepiej uczyć . Dzięki.MySQL,
474542 bajtówRok 1901 można zastąpić dowolnym rokiem, który był / nie jest rokiem przestępnym.
Edycja: zapisano dwa bajty, usuwając spacje i kolejne trzy bajty, zmieniając rok na 1, dzięki @Embodyment Ignorance .
źródło
1901, n
i ciąg?05AB1E ,
81797876757473717069 69 bajtów-9 bajtów dzięki @Grimy .
-1 bajt dzięki dzięki
standard the
sztuczce @ JonathanAllanth,st,nd,rd
, której użył w swojej odpowiedzi na galaretkę .Wypróbuj online lub sprawdź wszystkie możliwe przypadki testowe .
Wyjaśnienie:
Zobacz moją wskazówkę 05AB1E, aby zrozumieć, dlaczego:
”……‚應…ä†ï€¿…Ë…ê†Ä…æ…Ì…Í”
jest"December January February March April May June July August September October November"
…thŠØ
jest"th standards"
•ΘÏF•
jest5254545
źródło
•EË7Óæ•S₂+
, ale twój -3 golf nie działa niestety. Indeksowanie automatycznie zawija się w 05AB1E, więc5st,6nd,7rd,25st,26nd,27rd,29st
będzie źle. PS: gdyby to zadziałało,<Ā
mogłoby być≠
za dodatkowe -1. :)Á
).•C.ñÒā•
do•ΘÏF•º
, dodatkowe cyfry nie mają znaczenia)bash,
8280 bajtów-2 bajty dzięki tylko @ ASCII
TIO
bash + data GNU, 77 bajtów
źródło
Shell + coreutils,
11290 bajtówWypróbuj online! Link zawiera przypadki testowe. Edycja: Zapisano 22 bajtów dzięki @NahuelFouilleul. Wyjaśnienie:
Obliczyć liczbę dni po pierwszym dniu poprzedzającym rok bez przestępowania. (Niestety nie można wykonać obliczeń daty względnej
@-1
.)Podaj dzień miesiąca (bez wiodącego zera)
th
i pełną nazwę miesiąca.Naprawić
1st
,2nd
,3rd
,21st
,22nd
,23rd
i31st
.Przywróć
11th
do13th
.źródło
s
wdays
można usunąć,19
aw1969
Galaretka ,
11511410197 bajtówWypróbuj online!
Długie według standardów galaretki, ale zrobione z pierwszych zasad.
Dzięki @JonathanAllan za zaoszczędzenie 13 bajtów dzięki lepszemu zrozumieniu kompresji łańcuchów.
źródło
“£ṢtẒ⁽ẹ½MḊxɲȧėAṅ ɓaṾ¥D¹ṀẏD8÷ṬØ»Ḳ¤
zaoszczędziłoby 13 (Compress.dictionary szuka wiodącej przestrzeni i ma do tego specjalną obsługę).Arkusze Google,
11810386 bajtówNie mogę edytować komentarza, więc oto działająca wersja kodu Arkuszy Google.
Wypróbuj online!
źródło
Czerwony , 124 bajty
Wypróbuj online!
Dodaje
n
- 1 dni do 1-1-1 (1 stycznia 2001), aby utworzyć datę, niż używa metody Arnaulda do indeksowania sufiksów miesięcznych. Szkoda, że czerwony ma indeks 1, co wymaga dodatkowej modyfikacji. Dobrą rzeczą jest to, że Red zna nazwy miesięcy :)źródło
APL (NARS), 235 znaków, 470 bajtów
13561787 to liczba, którą w podstawie 4 można zsumować do (12–28) w celu uzyskania długości każdego miesiąca ... test:
źródło
C (gcc) ,
174155 bajtówWypróbuj online!
źródło
Python 3 , 95 bajtów
Datetimed it: P
from datetime import *;f=lambda s:(datetime(2019,1,1)+timedelta(days=s-1)).strftime("%d of %B")
Wypróbuj online!
źródło
of
to również niepotrzebne