Tu aimes le déjeuner. Cependant, vous suivez un régime et vous voulez vous assurer de ne pas manger accidentellement le déjeuner deux fois en une journée. Vous devez donc créer un programme pour vous en assurer.
Cependant, une complication est que vous déjeunez selon un horaire très étrange. L'heure à laquelle vous déjeunez est MOIS: JOUR PM (vous pouvez utiliser UTC ou le fuseau horaire localisé). C'est vrai, si le jour est le 14 juillet , vous déjeunez à 19h14 .
Pour votre programme, vous devez utiliser la date et l'heure actuelles (ne pas saisir d'entrée) et générer une valeur véridique cohérente si vous avez déjà déjeuné pour la journée (ou c'est l'heure du déjeuner maintenant), ou une valeur falsifiée cohérente si ce n'est pas le cas.
Exemples: (Heure d'exécution du programme => sortie)
- 4 mai 11h35 => faux (vous déjeunerez à 17h04)
- 3 juin 17h45 => faux (vous déjeunerez à 18h03)
- 28 juillet 20h30 => vrai (vous avez déjeuné à 19h28)
- 15 décembre 15h25 => vrai (vous avez déjeuné à 12h15)
- 29 février 14h29 => vrai (c'est exactement l'heure du déjeuner)
- 12 octobre 00h00 => false (la journée vient de commencer)
Référence:
Réponses:
Swift 3 , 310 octets
Vérifiez-le!
Cela imprime
true
etfalse
, pour la vérité et la fausse respectivement.la source
05AB1E ,
1518 octetsEssayez-le en ligne!
Explication
la source
Octave , 61 octets
Essayez-le en ligne!
Explication:
D'abord les fonctions:
now()
renvoie l'heure au format décimal. Les parenthèses sont facultatives.datestr
convertit un nombre décimal en une chaîne au format donné dans son deuxième argumentstr2num
convertit une chaîne en nombrediff
prend la différence entre deux nombresPanne:
Nous prenons cela du milieu:
datestr(now,'mmddHHMM')
: Nous prenons d'abord l'heure actuellenow
comme entréedatestr
et spécifions le formatmmddHHMM
. Les lettres signifient:mm = month
,dd = day
,HH = hour
,MM = minutes
etAM
précise que les heures devraient être sur un format de 12 heures. Aucun séparateur n'est inclus, pour le garder aussi court que possible. Il sortd = 07142117
au moment de la rédaction de cette explication. Je ferai référence à cette partie àx
partir de maintenant.[(d=x)(1:4);d(5:8)]
: Stocke la chaîne ci-dessus,d
puis crée un tableau avec deux éléments, les quatre premiers caractères, puis les 5-9 caractères. Cela donne :Où les nombres sont stockés sous forme de chaînes, pas de nombres. Nous appellerons le résultat ci-dessus pour
y
ci-dessous.str2num(y)
convertit le tableau de caractères en nombres, où chaque ligne se transforme en un seul nombre. Cela donne[714; 2122]
. Nous appellerons le résultat pourz
.diff(z)>1200
prend la différence entre les deux nombres et vérifie si l'heure actuelle est supérieure de 1200 à la date actuelle. Cela représente AM / PM. Cela nous donne le résultat souhaité.la source
Pyth,
222120 octets-1 octet grâce à @ Mr.Xcoder
Essaye ça!
ancienne approche,
2220 octetsEssayez!
explication
la source
&g.d6+.d4 12g.d5.d7
fonctionnerait pas pour 19 octets? Je ne suis pas sûr et je ne l'ai pas encore vraiment testé mais ...&g.d6+12.d4g.d5.d7
serait 18 en fait. De plus, dans l'ancienne approche, je ne pense pas que vous en ayez besoin`
, et cela deviendrait 18 octets de long. Je ne sais pas, je peux me tromper.g++720.d5*60.d4+*60.d6.d7
, mais malheureusement plus longue (25 octets). Cependant, cela pourrait être une source d'inspiration et j'ai pensé que je devrais le mentionner.C #, 174 octets
Essayez-le en ligne!
la source
()=>...
)Action<bool>
pour enregistrer les octets. À utiliserDateTime.Now
lors de l'accès au mois et au jour. En général, ilpublic
n'est pas nécessaire etProgram
peut être composé d'une seule lettre. Utilisezusing D=System.DateTime;
pour économiser des octets. Globalement, bonne idée, mais pourrait être beaucoup joué. Bienvenue chez PPCG!PHP et autres langages avec ces fonctions communes: environ 28 à 29 octets:
Ou bien
qui imprimeront tous les deux.
éventuellement en
?1:0
fonction de la représentation. Peut-être que les octets sont coupés si un langage est utilisé qui a un écho implicite, ou pas de ';' final.Pourquoi voudrait-on obtenir les valeurs dans des variables et tout le reste, quand ce n'est pas nécessaire :)
date()
laisse quoi que ce soit comme des littéraux qui ne sont pas définis, donc par exemple,7 May 2017 17:22:43
passe l'expression1722 - 1200 >= 507
à eval (). Octet enregistré en le changeant en équivalent1722 - 1199 > 507
.Qui a dit qu'eval était mort? ;-)
la source
Java, 81 octets
Essayez-le en ligne!
Non golfé:
la source
java.util.Date
dans le nombre d'octets.Haskell,
135129 octetsce déballage est assez ennuyeux, peut-être que la manipulation des cordes est mieux adaptée
// edit: les gardes de motif sont en sécurité 5 octets
la source
Mathematica,
656462 octets3 programmes
Ce sont chacun un octet de moins s'ils
≥
comptent comme un seul octet dans Mathematica.Explications
Date[]
renvoie une liste dans le formulaire{y,m,d,h,m,s}
. Il en va de même pourDate[][[4;;5]]
les heures et les minutes de l'heure actuelle.p=Date[][[#]]&;
faitp
une fonction qui prend les indices que nous voulons et nous donne ces parties de la date.{60,1}.#&
est une fonction anonyme qui prend le produit scalaire{60,1}
et l'entrée pour obtenir un moyen de comparer les temps. C'est un octet plus court queTimeObject
.p@2
est équivalent àp[2]
, le numéro du mois.+{12+p@2~Mod~12,0}
ajoute{12,0}
au mois et à la date où nous ne sommes pas en décembre, et ajoute le{0,0}
contraire. (Merci, michi7x7!)>=
est l'opérateur de comparaison, mais nous ne pouvons pas comparer {heures, minutes} à {mois, date} ajusté en entrée .../@
correspond{60,1}.#&
aux deux côtés de l'inégalité entre parenthèses, afin que nous puissions comparer les temps correctement.{60,1}.#&
, ils utilisent#
pour représenter l'entrée d'une grande fonction anonyme et&
pour signifier la fin.@Date[]
Applique la grande fonction de sa ligne (qui extrait des parties d'une liste) à la liste de dates elle-même.[Date[][[#]]&]
Applique la grande fonction de sa ligne à une autre fonction anonyme, qui extrait des parties de la liste de dates.Prime
Soit dit en passant, si nous déjeunions entre 1 h et 12 h 59, nous pourrions économiser 25 octets avec seulement
{60,1}.#&[Date[][[#]]]&/@(4;;5>=2;;3)
.Vous pouvez tester tout cela en collant le code dans le sandbox Wolfram Cloud et en cliquant sur Gear-> Evaluer la cellule ou en appuyant sur Maj + Entrée ou Entrée du pavé numérique.
la source
13:01
à24:31
Date[]
le bonus par(Date[]+{0,12,0,0,0,0})
(il peut y avoir un moyen de jouer au golf, mais12UnitVector[6,2]
c'est plus long). Le problème est qu'à des dates comme le 3 décembre, nous déjeunons à 12h03 et non à 24h03, nous devons donc en ajouter 12 sauf en décembre . Cela nous oblige à soit 1. jeter un œil à l'intérieur de la date pour voir si nous sommes en décembre ou non (comme dans mes réponses), soit 2. écrire une fonction qui examine si nous sommes allés à 24: XX après coup, ce qui serait plus long.JavaScript (ES6), 75 octets
Ces longs noms de fonction ...
la source
Python 3 , 104 octets
Essayez-le en ligne!
Tous les tests datetime. J'ai remplacé le 29 février par le 28 février car la date invalide ne fonctionnait pas.
la source
R , 92 octets
Essayez-le en ligne!
la source
q, 31 octets
Exemple:
L'interprète est disponible ici
Ancienne version
la source
2$
pad se transformera6
en6_
plutôt que_6
, donc vous le voudriez(-2)$
, mais vous pouvez annuler ces 3 caractères supplémentaires en utilisant le raccourci pourstring
as($)
... ou au lieu d'utiliser $ pour pad, ajoutez "0", puis prenez les 2 derniers caractères:{x:.z.P;x>"T"$":"sv -2#'"0",'($)12 0+
mmdd$\:x}
pour 49 octetsJavaScript, 75 octets
Ce qui équivaut au code suivant:
la source
t
peut être utilisé pendant la modificationt=new Date,t.setMinutes(t.getDate(t.setHours(13+t.getMonth(n=+t))))<n
Python 2.7, 130 octets
Essayez-le en ligne
Remarque: il peut y avoir un problème avec le panneau. Veuillez excuser cela parce que je suis IST et c'est assez déroutant car il est 2 h 28 ici maintenant. Corrigez le signe si vous pensez qu'il est faux.
la source
Perl, 45 caractères
Si je dois fournir une méthode, ce sera 45 pour
sub c{...}
. Si je dois imprimer,say ()||0
il suffit de 47. J'ajouterai cela si c'est une exigence.la source
you need to make a program to help you make sure
que les extraits ne sont pas autorisés - cela dit que l'une ou l'autre de vos méthodes de sortie répertoriées est généralement considérée comme valideperl -e
c'était généralement bien, mais d'autres ont fourni des fonctions, alors je l'ai modifié.Excel,
525049 octetsL'entrée est cette formule dans n'importe quelle cellule.
La sortie est soit
TRUE
ouFALSE
.La gestion des dates intégrée d'Excel aide beaucoup.
La
TIME
fonction renvoie l'heure du déjeuner du jour sous la forme d'une valeur d'heure qui, si elle était convertie en date, serait utiliséeJan 0, 1900
. Nous le comparons àNOW - TODAY
donc nous obtenons l'heure actuelle avec une valeur de date de0
ouJan 0, 1900
.Enregistré 2 octets grâce à Wernisch
Enregistré 1 octet grâce à Adam
la source
now()-today()
àmod(now(),1)
JavaScript, 62 caractères
Code de test ci-dessous:
Afficher l'extrait de code
la source
Excel VBA, 55 octets
Fonction de fenêtre immédiate VBE anonyme qui ne prend aucune entrée et génère une valeur booléenne indiquant si j'ai déjeuné dans la fenêtre immédiate VBE
la source
Rubis , 64 + 7 = 71 octets
Nécessite l'
-rtime
indicateur parce que pour une raison quelconque,Time::parse
c'est comme, la seule fonction l'exige de l'ensemble duTime
module.Essayez-le en ligne! (il imprime également l'heure actuelle)
la source
Julia 0.6.0 99 octets
a=split(string(Dates.today()),"-");(Dates.hour(now())<parse(a[2]))&&Dates.minute(now())<parse(a[3])
Julia a intégré une fonction pour utiliser l'horloge / le calendrier de l'ordinateur. Mon ordinateur fonctionne sur Ubuntu 16.04 et déjà avec une horloge de 12 heures, donc je ne peux pas dire si ce que j'ai fait fonctionne avec une autre machine utilisant une horloge différente, mais semble fonctionner sur ma machine.
la source
JavaScript ES6, 70 octets
Peut-être pas à droite sur quelques millisecondes ...
la source
Matlab, 241 octets
Explication: Tout d'abord, j'obtiens la date sous forme de chaîne. Ensuite, j'isole le mois et le jour. Étant donné que le problème indique qu'il est toujours interprété comme PM, j'écris automatiquement false si l'heure est en AM. Si l'heure actuelle est en PM, je continue et je compare simplement les chiffres de l'heure.
Remarque: Je l'ai formaté légèrement différemment ici pour plus de lisibilité.
la source