¿A quién no le gusta relajarse un domingo por la mañana en verano con una cerveza fría y la televisión o en invierno jugando al bádminton o al máximo con amigos?
Siempre pienso que saber cuántos días tienes para relajarte en un mes te mantiene bien informado y te ayuda a planificar lo que quieres hacer. Ya sea sentado frente a su PC y resolviendo un problema de código de golf o saliendo a jugar al fútbol.
Así que me ayudan a escribir un programa o función que toma como entrada 2 enteros positivos, Yy My emite el número de domingos en ese año en particular ( Y) y mes ( M) (según el calendario gregoriano), seguido de la fecha de cada domingo.
Además, tenga en cuenta que gana el código más corto.
Restricciones de entrada
1000 <= Y <= 9999
1 <= M <= 12
Salida
Estos casos de prueba tendrán salida tendrán las fechas de cada domingo de ese mes en ese año en el formato DD-MM-YYYY.
Ejemplos de casos de prueba
Caso de prueba 1
Entrada de muestra
2017 1
Salida de muestra
5
01-01-2017
08-01-2017
15-01-2017
22-01-2017
29-01-2017
Caso de prueba 2
Entrada de muestra
2018 2
Salida de muestra
4
04-02-2018
11-02-2018
18-02-2018
25-02-2018
Caso de prueba 3
Entrada de muestra
2016 11
Salida de muestra
4
06-11-2016
13-11-2016
20-11-2016
27-11-2016

Date()objeto, y cualquier formato de salida, incluido[4, [<dateobj>, <dateobj>, <dateobj>, <dateobj>]](donde<dateobj>es un objeto de fecha real y[]es una matriz real)./lugar de-? ¿O puede ser mes, luego día, luego año?Respuestas:
MATL ,
46454235 bytesLa entrada es una matriz del formulario
[2017 1]. El formato de salida es29/01/2017.Pruébalo en línea! O verificar todos los casos de prueba .
Explicación
fuente
Python 2 ,
150,148,145 bytesPruébalo en línea!
-3 bytes haciendo cosas más pitónicas (¡usando zip y filtro!)
fuente
JavaScript (ES6), 107 bytes
Editar: Agregar un recuento explícito cuesta 15 bytes. Formatear la salida costaría al menos otros 33 bytes dependiendo de cuán estricto sea el formato de salida.
fuente
outputs the number of Sundays in that particular year and month; parece que esto no genera actualmente la cantidad de domingos.<input type='date'>.PowerShell , 91 bytes
Pruébalo en línea!
(Nota especial: esto depende de la configuración regional y cultural. Dado que TIO se está ejecutando como
en-us, funciona correctamente allí como está. Es posible que sea necesario cambiar este código para diferentes configuraciones regionales).Toma la entrada como dos enteros
$yy$m. Recorre de1a31, obteniendo un nuevodatetimeobjeto para cada fecha posible (a través delGet-Datecmdlet). Lanzará errores a STDERR (ignorado por defecto en los desafíos de código de golf) durante meses con menos de 31 días, pero eso no afecta la salida. Tomamos cada uno de esosdatetimeobjetos y usamos unWhere-Object(|?{...}) en ellos, con la cláusula de!$_.dayofweek. La propiedad.dayofweekes un número desde0hasta6, con0convenientemente correspondiente aSunday, por lo que el!de eso es verdadero, lo que ahorra un par de bytes en comparación con una verificación de igualdad como-eq0.Los domingos se reúnen en parejas y se almacenan en
$a. Luego tomamos el.countmismo, y eso se coloca en la tubería. Luego, recorremos$ay usamos el-foperador ormat para construir el formato de salida correcto. Tenga en cuenta que esto no genera ceros iniciales durante días o meses. Esas cadenas de fecha también se dejan en la tubería, y un implícitoWrite-Outputal finalizar el programa las imprime con separadores de nueva línea.Nota: si el formato de salida fuera más flexible, podríamos dejarlo
$aen la tubería y no tener que recorrerlo. Eso encadenará losdatetimeobjetos como el formato de fecha larga, incluida la información de tiempo, pero nos lleva a 69 bytes , que (actualmente) solo serían superados por Mathematica y MATL.fuente
Octava, 72 bytes
nweekdatedevuelve el número de fecha correspondiente a laNenésima aparición de un día de la semana en particular en el mes / año especificado. Usamos la matriz1:6en lugar deNpara obtener todas las ocurrencias en un mes. Si hay menos de lasNocurrencias de ese día de la semana en un mes, entonces el número de fecha resultante es0. Por esta razón, seleccionamos solo las fechas válidas usando(x>1)y luego las convertimos en cadenas usandodatestr.Luego, para contar el número de domingos, contamos el número de números de fecha que no son cero (
nnz) en el resultado.Luego envolvemos todo
cellfunpara mostrar cada valor.fuente
Rubí,
140132129118 bytesfuente
Excel - 103 caracteres
Ponga el año en la celda
A1y el mes en la celdaA2.El recuento está en la celda
D1y los domingos en las celdasD2:D6.Los supuestos
D2:D6tienen formato DD-MM-AAAA.fuente
Mathematica,
8268 bytesFunción anónima. Emite una lista de la cantidad de días, seguida de una lista de domingos como
DateObjects. Resulta que, en Mathematica, el día 0 de un mes se interpreta como el último día del mes anterior.fuente
C #, 183 bytes
Método anónimo que devuelve una matriz de cadenas, que contiene primero el número de domingos y luego cada domingo en el formato especificado. Si solo hay 4 domingos en un mes, la última cadena es nula.
Programa completo con método no protegido y casos de prueba:
fuente
REXX, 168 bytes
fuente
1217?Bash + bsdmainutils, 94 bytes
Utiliza el comando
calque imprime un calendario, se instala por defecto en varios UNIX / LINUX / BSD (desafortunadamente no en TIO).Para probarlo Guardar
file,chmod +x filey de ejecución./file 2017 9Se guarda para agrupar los primeros dos bytes de salida de cal anexados con la cadena "MM-AAAA" que se pasa como segundo y primer parámetro (debe cambiar si su configuración regional no comienza semanas los domingos).
El siguiente eco suscribe la longitud de la matriz sustraída por uno (el primer elemento es la palabra que representa el domingo) y la matriz sin el primer elemento, uno por línea
fmt -1fuente
SAS, 182 bytes
fuente
T-SQL,
316311 bytesSin embargo, no sé si es una respuesta válida, ya que genera la cantidad de domingos después de las fechas
Pruébalo aquí
sin golf:
fuente
PHP,
127 118 112107 bytestoma datos de los argumentos de la línea de comandos; correr
-ro probarlo en línea .Descompostura
fuente
Excel VBA, 190 bytes
fuente