Qui n'aime pas se détendre un dimanche matin en été avec une bière fraîche et la télévision ou en hiver jouer au badminton ou ultime avec des amis?
Je pense toujours que savoir combien de jours vous devez vous détendre au cours d'un mois vous tient bien informé et vous aide à planifier ce que vous voulez faire. Que ce soit assis devant votre ordinateur et résolvant un problème de code-golf ou sortant jouer au football.
Alors, aidez - moi écrire un programme ou une fonction qui prend en entrée 2 entiers positifs, Y
et M
et envoie le nombre de dimanches cette année -là ( Y
) et mois ( M
) (selon le calendrier grégorien), suivi de la date de chaque dimanche.
Gardez également à l'esprit que le code le plus court l'emporte.
Contraintes d'entrée
1000 <= Y <= 9999
1 <= M <= 12
Production
Ces cas de test auront une sortie qui aura les dates de chaque dimanche de ce mois de cette année dans le format DD-MM-YYYY
.
Exemples de cas de test
Cas de test 1
Exemple d'entrée
2017 1
Exemple de sortie
5
01-01-2017
08-01-2017
15-01-2017
22-01-2017
29-01-2017
Cas de test 2
Exemple d'entrée
2018 2
Exemple de sortie
4
04-02-2018
11-02-2018
18-02-2018
25-02-2018
Cas de test 3
Exemple d'entrée
2016 11
Exemple de sortie
4
06-11-2016
13-11-2016
20-11-2016
27-11-2016
Date()
objet, et tout format de sortie, y compris[4, [<dateobj>, <dateobj>, <dateobj>, <dateobj>]]
(où se<dateobj>
trouve un objet de date réel et[]
un tableau réel)./
au lieu de-
? Ou peut-il s'agir d'un mois, puis d'un jour, puis d'une année?Réponses:
MATL ,
46454235 octetsL'entrée est un tableau du formulaire
[2017 1]
. Le format de sortie est29/01/2017
.Essayez-le en ligne! Ou vérifiez tous les cas de test .
Explication
la source
Python 2 ,
150, 148,145 octetsEssayez-le en ligne!
-3 octets rendant les choses plus pythoniques (en utilisant zip et filtre!)
la source
JavaScript (ES6), 107 octets
Edit: L'ajout d'un compte explicite coûte 15 octets. Le formatage de la sortie coûterait au moins 33 octets supplémentaires selon la rigueur du format de sortie.
la source
outputs the number of Sundays in that particular year and month
; semble que cela ne génère pas actuellement le nombre de dimanches.<input type='date'>
.PowerShell , 91 octets
Essayez-le en ligne!
(Remarque spéciale - cela dépend des paramètres régionaux et de la culture. Étant donné que TIO fonctionne en tant que
en-us
, il fonctionne correctement tel quel. Ce code peut devoir être modifié pour différents paramètres régionaux.)Prend l'entrée comme deux entiers
$y
et$m
. Boucles de1
à31
, obtenant un nouveldatetime
objet pour chaque date possible (via l'Get-Date
applet de commande). Lance des erreurs dans STDERR (ignorées par défaut sur les défis de code-golf) pendant des mois avec moins de 31 jours, mais cela n'affecte pas la sortie. Nous prenons chacun de cesdatetime
objets et utilisons unWhere-Object
(|?{...}
) sur eux, avec la clause de!$_.dayofweek
. La propriété.dayofweek
est un nombre de0
à6
, avec0
une correspondance appropriée àSunday
, donc!
celle-ci est véridique, ce qui économise quelques octets par rapport à une vérification d'égalité comme-eq0
.Les dimanches sont ensuite rassemblés en parens et stockés dans
$a
. Nous prenons ensuite.count
celui - ci, qui est placé sur le pipeline. Ensuite, nous parcourons$a
et utilisons l'-f
opérateur ormat pour construire le format de sortie correct. Notez que cela ne génère pas de zéros non significatifs pendant des jours ou des mois. Ces chaînes de date sont également laissées sur le pipeline, et un impliciteWrite-Output
à la fin du programme les imprime avec des séparateurs de nouvelle ligne.NB - si le format de sortie était plus flexible, nous pourrions simplement laisser
$a
sur le pipeline et pas besoin de le parcourir. Cela stratifiera lesdatetime
objets en tant que format de date longue, y compris les informations d'heure, mais nous ramènera à 69 octets , qui ne seraient (actuellement) battus que par Mathematica et MATL.la source
Octave, 72 octets
nweekdate
renvoie le numéro de date correspondant à laN
-ème occurrence d'un jour de semaine particulier dans le mois / l'année spécifié. Nous utilisons le tableau1:6
à la place deN
pour obtenir toutes les occurrences en un mois. S'il y a moins d'N
occurrences de ce jour de semaine dans un mois, le numéro de date résultant est0
. Pour cette raison, nous sélectionnons uniquement les dates valides à l'aide(x>1)
, puis les convertissons en chaînes à l'aidedatestr
.Ensuite, pour compter le nombre de dimanches, nous comptons le nombre de
nnz
dates non nulles dans le résultat.Nous enveloppons ensuite le tout
cellfun
pour afficher chaque valeur.la source
Ruby,
140132129118 octetsla source
Excel - 103 caractères
Mettez l'année dans la cellule
A1
et le mois dans la celluleA2
.Le décompte est en cellule
D1
et le dimanche en celluleD2:D6
.Suppose que le
D2:D6
format est JJ-MM-AAAA.la source
Mathematica,
8268 octetsFonction anonyme. Affiche une liste du nombre de jours, suivie d'une liste des dimanches en tant que
DateObject
s. Il s'avère que dans Mathematica, le 0e jour d'un mois est interprété comme le dernier jour du mois précédent.la source
C #, 183 octets
Méthode anonyme qui renvoie un tableau de chaînes, contenant d'abord le nombre de dimanches puis chaque dimanche au format spécifié. S'il n'y a que 4 dimanches par mois, la dernière chaîne est nulle.
Programme complet avec méthode non golfée et cas de test:
la source
REXX, 168 octets
la source
1217
?Bash + bsdmainutils, 94 octets
Utilise la commande
cal
qui imprime un calendrier, est installée par défaut dans plusieurs UNIX / LINUX / BSD (malheureusement pas dans TIO).Pour l'essayer, enregistrez-le sur
file
,chmod +x file
et courir./file 2017 9
Enregistre dans un tableau les deux premiers octets de sortie cal ajoutés avec la chaîne "MM-YYYY" passée en tant que deuxième et premier paramètres (doit changer si votre locale ne démarre pas des semaines le dimanche).
Écho suivant la longueur du tableau soustrait par un (le premier élément est le mot représentant dimanche) et le tableau sans le premier élément, un par ligne
fmt -1
la source
SAS, 182 octets
la source
T-SQL,
316311 octetsJe ne sais pas si c'est une réponse valable, car elle affiche le nombre de dimanches après les dates
Essayez-le ici
non golfé:
la source
PHP,
127118112107octetsprend l'entrée des arguments de la ligne de commande; courir avec
-r
ou tester en ligne .panne
la source
Excel VBA, 190 octets
la source