W kalendarzu tajlandzkim rok 2017 odpowiada 2560. Kalendarz tajski ma zawsze 543 lata wcześniej niż kalendarz gregoriański.
Obserwatorzy kodujący zauważą, że 2560 jest równy 2^9 * 5
, innymi słowy, ma 10 czynników pierwszych. To się nie powtórzy przez kolejne 896 lat! Rok nazywamy wytrwałym, jeśli ma dokładnie dziesięć głównych czynników.
Napisz program, który generuje prawdziwą wartość, jeśli bieżący rok korzystający z kalendarza tajlandzkiego, opartego na zegarze systemowym, jest wytrwały, aw przeciwnym razie - falsey.
Przypadki testowe:
- Jeśli program zostanie uruchomiony w 2017 r.,
true
- Jeśli program jest uruchamiany w którymkolwiek z lat od 2018 do 2912,
false
- Jeśli program jest uruchomiony podczas 2913,
true
(2913 + 543 =2^7 * 3^3
)
Odpowiedzi:
Bash + coreutils, 35 bajtów
Dane wyjściowe to niepusty ciąg znaków (prawda) lub pusty ciąg znaków (fałsz).
Wypróbuj online!
Alternatywna wersja: 37 bajtów.
Nie tak golfowo, ale podoba mi się ten.
Wypróbuj online!
Jak to działa
$[
Data rozszerzenia arytmetycznej +% Y jest+543]
wykonywana,date +%Y
aby uzyskać bieżący (pełny) rok i dodaje 543 do roku.Współczynnik przyjmuje sumę jako argument i wypisuje ją na czynniki pierwsze: najpierw liczba, która ma zostać uwzględniona, a następnie lista poszczególnych czynników pierwszych.
Na koniec awk filtruje dane wejściowe, drukując tylko wiersze z dokładnie 11 polami (liczba plus 10 czynników pierwszych).
źródło
05AB1E , 10 bajtów
Wypróbuj online! lub jako pakiet testowy
Wyjaśnienie
źródło
CJam , 13 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Mathematica,
3731 bajtów5 bajtów zapisanych z powodu lanlock4 .
Funkcja anonimowa. Nie pobiera danych wejściowych i zwraca
True
aniFalse
danych wyjściowych.źródło
Now
jest niejawny. Możesz użyćDateValue@"Year"
.&
na końcu? PonadtoDate[][[1]]
jest o kilka bajtów krótszy niżDateValue@"Year"
(jeśli nie przeszkadza, żeDate
jest przestarzały).#&@@Date[]
zamiastDate[][[1]]
. Myślę też, że „środowisko Mathematica + REPL” jest tutaj poprawnym językiem programowania, dla którego nie trzeba kończyć&
.Pyth, 11 bajtów
Tłumacz online dostępny tutaj.
Wyjaśnienie
źródło
Japt ,
18 1413 bajtówOszczędność 4 bajtów dzięki produktom ETH. Zaoszczędzono 1 bajt dzięki obarakon.
Wypróbuj online!
źródło
A¥º543+Ki¹k l
lub543+Ki¹k l ¥A
¹
używany, czy nie)
zrobiłby tego samego?)
zamiast tego.Python 2 ,
9289 bajtów-3 bajty dzięki Jonathanowi Allanowi
Wypróbuj online!
Iteruj do roku, wydobywając (i wykreślając) czynniki pierwsze.
Linia wykonania jest równoważna z:
źródło
c=i=1
;c-=1
;print-9==c
.Oktawa , 31 bajtów
Wypróbuj online!
Zastosowano tutaj dwie sztuczki:
clock()(1)
indeksować bezpośrednio do wynikuclock
(clock(1)
nie działa)nnz
zamiastnumel
, ponieważ wszystkie wpisy są niezerowe.Wersja alternatywna, ta sama liczba bajtów
Ta wersja może być używana tylko przez lata przekraczające
30
, aleoczywiściebez uwzględnienia podróży w czasie obejmuje to wszystkie lata, w których program może być wykonywany. Działa również w Matlabie.źródło
PHP,
1116866bezpośrednio liczy liczbę czynników pierwszych.
Stary pomysł:
11190Nie używa to wbudowanego głównego faktorowania, ale w zasadzie liczącego pierwsze sito, aby uzyskać liczbę czynników pierwszych o wartości <10000. To odwzorowuje na 4-cyfrowy rok, który PHP zapewnia, używając
date('Y')
:źródło
Y
nie wymaga cudzysłowów z-nr
.$a[$i*$j]=($a[$i]?:1)+($a[$j]?:1)
oszczędza 13 bajtów.$j=++$i<1e4
ratuje jeden. I brak cytatów dlaY
dwóch kolejnych.MATL , 14 bajtów
Wypróbuj online!
źródło
Partia, 123 bajty
Możesz podrobić skrypt, ręcznie nadpisując
date
zmienną przed jej uruchomieniem.źródło
J , 18 bajtów
Treść programu:
Wypróbuj online!
10=
jest dziesięć równe#
suma zq:
główne czynniki543+
ten numer został dodany do{.
głowa (pierwsza pozycja, tj. rok) z6!:0''
data (jako YMD hms)źródło
JavaScript (ES6),
7975 bajtówPort mojej odpowiedzi wsadowej. Przekaż tajlandzki rok kalendarzowy, jeśli chcesz wykonać określony test. Edycja: Zapisano 4 bajty dzięki @dandavis.
źródło
new Date().getYear()+2443
false
? krótsze:+Date().slice(11,15)+543
iy?
zamiasty>1
y?
jest bezcelowy,y
nigdy nie jest równy zero.