W tym wyzwaniu musisz ustalić, czy chodzi o Dzień Pi, Pi Minute czy Pi Second.
Ponieważ Pi jest irracjonalny, chce, aby Twój kod był jak najkrótszy.
Przykłady
Brak danych wejściowych , twój program powinien wykorzystać czas systemowy. Właśnie dodałem to dla jasności
March 14, 2016 0:00:00
Pi Day
December 25, 2015 3:14:45
Pi Minute
December 29, 2015 0:03:14
Pi Second
January 1, 2016 0:00:00
<No Output>
Co to jest Dzień Pi / Minuta / Sekunda
Pi Day
jest, gdy miesiącem jest marzec, a data jest 14Pi Minute
jest, gdy godzina jest 3, a minuta to 14Pi Second
jest, gdy minuta to 3, a druga to 14Pi Day
powinien być preferowany zamiastPi Minute
lubPi Second
iPi Minute
powinien być preferowany zamiastPi Second
.- Do tego wyzwania należy użyć 12-godzinnego czasu (15:14 == 3:14). Data / czas użyte do ustalenia
Pi Day/Minute/Second
powinny być oparte na czasie systemowym .
Punktacja i bonus
-15 bajtów Bonus: Jeśli drukujesz, "No Pi Time"
gdy nie jest czas Pi.
Jak zawsze, standardowe luki są niedozwolone. To jest najkrótszy kod w golfa wygrywający bajty!
Odpowiedzi:
CJam, 41 bajtów
Sprawdź to tutaj. Alternatywnie użyj tego linku, aby zsumować wynik
et
dla łatwiejszego testowania.Wyjaśnienie
źródło
JavaScript (ES6),
114112-15 = 97 bajtówNie golfowany:
Dzięki za -2 bajty @ edc65
źródło
Date()
zamiastnew Date
'Pi '+['Day','Minute','Second'].find((x,i)=>
................"Pi undefined"
nderscore
niżunderscore
.Rubin,
125124 znakówNiestety, mądrzejszy
%i[month day hour min sec].map{|x|Time.new.send x}
jest dłuższy.Kluczem tutaj jest użycie,
each_cons
aby uniknąć powtórzeń (patrz kilka ostatnich wierszy wyjaśnienia poniżej).źródło
'Pi'
tak , jak to zrobiłeśt
, nie?[(p='Pi ')+Day','',p+'Minute',p+'Second']
jest dłużej.Python 2,
219186183 Bajtów (198-15)próbowałem
Nie golfowany:
Gra w golfa:
źródło
from datetime import*;n=datetime.now()
jest krótszy. Ponadto indeksowanie do tablicy nie ma sensu, gdy drukujesz ciągi ciągłe.time.localtime()
; sprowadza się do 148-15 bajtów (bez poprawki 12-godzinnej). 12-godzinna sprawa jest jednak niefortunna; bez tego można łatwo sprowadzić go do 129-15 bajtów:import time;x=3,14;T=time.localtime();print{1:'Pi Day',3:'Pi Minute',4:'Pi Second'}.get((zip(T,T[1:])+[x]).index(x),'No Pi Time')
(i 118-15 bajtów w Pythonie 3, konwertując na bajty i używając find, co ułatwia rzeczy)Japt, 78-15 = 63 bajty
Całkiem proste - wystarczy sprawdzić datę dla każdej sprawy.
Wyjaśnienie:
D=Ð)g
pobierz aktualną datę (Ð
), zapisz ją w zmiennejD
i uzyskaj month (g
). Po co przechowywać go w zmiennej, jeśli jest ona już jedną literą? Ponieważ od tego czasu możesz ubierać dowolną część datyDa
, gdziea
jest funkcja, zwracanie roku, miesiąca, daty itp. Ale w przeciwnym razie musisz zrobićÐ a
, zobaczyć przestrzeń.¥3
jest==3
sprawdzenie, czy miesiącem jest marzec.©
to&&
znaczy „i”.Df
jest dniem miesiąca.E
ma 14 lat?...:...
- typowe zestawy operatorów trójskładnikowychDd %C
przypomnienie o podzieleniu godziny (Dd
) przez 12 (C
)Dc
to minutyDb
są sekundyWypróbuj online!
Aby emulować Dzień Pi:
Aby naśladować Pi Minute :
Aby emulować Pi Second :
źródło
TI-BASIC, 124 bajty
Dzięki FlagAsSpam za golenie kilku bajtów.
źródło
i
(jednostki urojonej) ie
(stałej Eulera) jako skrótów? Jeśli nie, może to również zaoszczędzić trochę bajtów.e
rzeczywistości mają dwa bajty!Perl, 80-15 = 65 bajtów
Weź 2, analizując reprezentację ciągu
localtime
. Obecnie wygląda to mniej więcej tak:Pozycja dopasowanego ciągu służy do ustalenia prawidłowego czasu pi.
Perl, 100 bajtów
localtime
zwraca indeksowane zero miesięcy, stąd potrzeba3-/3/
.źródło
Python 3, 137-15 = 122 bajtów
Wymaganie 12 godzin było niefortunne, ponieważ bez niego byłoby to 118-15 = 103 bajtów:
źródło
AppleScript,
202190187183181 bajtówHej, to wcale nie jest takie złe.
Naprawdę znalazłem zastosowanie do wywoływania metod AppleScript. Domyśl.Nie. Po prostu się okazujeI'm an idiot
. Ustawienie zmiennej jest krótsze.(dla tych, którzy zastanawiają się, polecenie bieżącej daty zwraca typ daty z zawartością
"Saturday, January 2, 2016 at 2:46:01 PM"
itp.)źródło
PHP, 85-15 = 70 bajtów
Główną sztuczką jest tutaj
Ymdhi_is
format daty , w momencie pisaniadate('Ymdhi_is')
zwraca201501030258_5828
.md
,hi
Iis
są wartościami, które zostaną zastąpione przez0314
jeśli jest to Pi-coś. Zauważ, że wszystkie te ciągi zawsze będą zastępowane ciągiem o długości 4 znaków.strpos
przestaną szukać przy pierwszym wystąpieniu igły, więc ustawiamy je w kolejności pierwszeństwa.hi
iis
jest konieczny, ponieważ nie chcemystrpos
dopasowywać wartości, która nakładałaby się na obie (dzięki primo za zapisanie bajtów tutaj).0314
ponieważ314
błędnie pasuje 10:31:42 jako Pi-Second.Część Y jest najtrudniejsza. Potrzebujemy prefiksu, aby zrównoważyć pierwsze wystąpienie Pi-coś, co pozwoli nam rozróżnić
strpos
zwracane wartości międzyfalse
(nie znaleziono, Pi-nic) a0
(znaleziony przy indeksie 0, Pi-dzień).Chcemy, aby ten prefiks miał długość 4 lub 5 znaków, ponieważ planujemy podzielić
strpos
wartość zwracaną przez 4.Y ma 4 znaki, ale:
Y
zostaną zastąpione 4 cyframi, ale to nieprawda .Ponieważ PHP nie istniał w roku 314 i prawdopodobnie już nie będzie istniał w roku 10314, myślę, że te błędy można bezpiecznie zignorować.
Pamiętaj, że
0314
mogą się one nakładać,Ymd
ponieważ:Ymmd
konfiguracja: nie ma 31. miesiąca.YYmm
konfiguracja: nie ma 14 miesiąca.YYYm
konfiguracja: jest mniej niż 40 miesięcy.Jest też wersja bez błędów związanych z rokiem, która wynosi 86-15 = 71 bajtów :
źródło
Ymd_hi_is
. Nie sądzę też, aby separator był konieczny międzymd
ihi
, ponieważ 12-godzinna godzinah
nigdy nie może być 14 i nigdy nie zaczyna się od 3 lub 4.Python 3, 179 bajtów
źródło