Dans le calendrier thaïlandais, l'année 2017 correspond à 2560. Le calendrier thaïlandais a toujours 543 ans d'avance sur le calendrier grégorien.
Les codeurs attentifs noteront que 2560 est égal à 2^9 * 5
, c'est-à-dire qu'il a 10 facteurs premiers. Cela ne se reproduira plus avant 896 ans! Nous appelons une année tenace si elle a exactement dix facteurs premiers.
Écrivez un programme qui génère une valeur véridique si l'année en cours en utilisant le calendrier thaïlandais, basé sur l'horloge système, est tenace, et une valeur falsey sinon.
Cas de test:
- Si le programme est exécuté en 2017,
true
- Si le programme est exécuté au cours de l'une des années 2018 à 2912,
false
- Si le programme est exécuté pendant 2913,
true
(2913 + 543 =2^7 * 3^3
)
Réponses:
Bash + coreutils, 35 octets
La sortie est soit une chaîne non vide (véridique), soit une chaîne vide (falsifiée).
Essayez-le en ligne!
Version alternative: 37 octets.
Pas aussi golfique, mais j'aime celui-ci.
Essayez-le en ligne!
Comment ça fonctionne
La
$[
date d' expansion arithmétique +% Y+543]
s'exécutedate +%Y
pour obtenir l'année (complète) en cours et ajoute 543 à l'année.Factor prend la somme en argument et l'imprime factorisation première: d'abord le nombre à factoriser, puis une liste de facteurs premiers individuels.
Enfin, awk filtre l'entrée, imprimant uniquement les lignes avec exactement 11 champs (le nombre plus 10 facteurs premiers).
la source
05AB1E , 10 octets
Essayez-le en ligne! ou comme suite de tests
Explication
la source
CJam , 13 octets
Essayez-le en ligne!
Explication
la source
Mathematica,
3731 octets5 octets enregistrés grâce à lanlock4 .
Fonction anonyme. Ne prend aucune entrée et retourne
True
ouFalse
comme sortie.la source
Now
est implicite. Vous pouvez utiliserDateValue@"Year"
.&
à la fin? En outre,Date[][[1]]
quelques octets sont plus courts queDateValue@"Year"
(si cela ne vous dérange pas, celaDate
est obsolète).#&@@Date[]
à la place deDate[][[1]]
. En outre, je pense que "l'environnement Mathematica + REPL" est un langage de programmation valide ici, pour lequel vous n'avez pas besoin de la terminaison&
.Pyth, 11 octets
Interprète en ligne disponible ici.
Explication
la source
Japt ,
18 1413 octets4 octets enregistrés grâce à ETHproductions. 1 octet enregistré grâce à obarakon.
Essayez-le en ligne!
la source
A¥º543+Ki¹k l
ou543+Ki¹k l ¥A
¹
utilisé, ne ferait pas)
la même chose?)
place.Python 2 ,
9289 octets-3 octets grâce à Jonathan Allan
Essayez-le en ligne!
Itérer jusqu'à l'année, en extrayant (et en coutant) les facteurs premiers.
La ligne exec équivaut à:
la source
c=i=1
;c-=1
;print-9==c
.Octave , 31 octets
Essayez-le en ligne!
Deux astuces utilisées ici:
clock()(1)
pour indexer directement dans la sortie declock
(clock(1)
ne fonctionne pas)nnz
au lieu denumel
, car toutes les entrées sont garanties différentes de zéro.Version alternative, même nombre d'octets
Cette version ne peut être utilisé pendant des années supérieures
30
, mais detoute évidenceVoyage dans le temps sans tenir compte cela inclut toutes les années qui peut être exécuté le programme. Cela fonctionne également dans Matlab.la source
PHP,
1116866compte directement le nombre de facteurs premiers.
Vieille idée:
11190Cela n'utilise pas de facteur factoriel intégré mais essentiellement un tamisage de comptage pour obtenir le nombre de facteurs premiers d'un nombre <10000. Cela correspond à l'année à 4 chiffres que PHP fournit en utilisant
date('Y')
:la source
Y
ne nécessite pas de guillemets avec-nr
.$a[$i*$j]=($a[$i]?:1)+($a[$j]?:1)
enregistre 13 octets.$j=++$i<1e4
enregistre un. Et pas de devis pourY
deux de plus.MATL , 14 octets
Essayez-le en ligne!
la source
Lot, 123 octets
Vous pouvez simuler le script en remplaçant manuellement la
date
variable avant de l'exécuter.la source
J , 18 octets
Organe du programme:
Essayez-le en ligne!
10=
est égal à dix#
le décompte deq:
les facteurs premiers de543+
ce nombre ajouté à{.
la tête (premier élément, c'est-à-dire l'année)6!:0''
la date (en hms YMD)la source
JavaScript (ES6),
7975 octetsPort de ma réponse de lot. Passez l' année civile thaïlandaise si vous souhaitez effectuer un test spécifique. Edit: 4 octets enregistrés grâce à @dandavis.
la source
new Date().getYear()+2443
false
? shortners:+Date().slice(11,15)+543
ety?
au lieu dey>1
y?
est inutile,y
n'est jamais nul.