Introducción
Algunos meses son completamente simétrica , lo que significa que tienen simetría central , así como simetría de reflexión , como February of 2010:
February 2010
┌──┬──┬──┬──┬──┬──┬──┐
│ │ │ │ │ │ │ │
├──┼──┼──┼──┼──┼──┼──┤
│ │ │ │ │ │ │ │
├──┼──┼──┼──┼──┼──┼──┤
│ │ │ │ │ │ │ │
├──┼──┼──┼──┼──┼──┼──┤
│ │ │ │ │ │ │ │
└──┴──┴──┴──┴──┴──┴──┘
Algunos meses solo tienen simetría central, como February of 1996o mes actual, el April of 2018:
February 1996
┌──┬──┬──┬──┐
│ │ │ │ │
┌──┬──┬──┼──┼──┼──┼──┤
│ │ │ │ │ │ │ │
├──┼──┼──┼──┼──┼──┼──┤
│ │ │ │ │ │ │ │
├──┼──┼──┼──┼──┼──┼──┤
│ │ │ │ │ │ │ │
├──┼──┼──┼──┼──┴──┴──┘
│ │ │ │ │
└──┴──┴──┴──┘
April 2018 ┌──┐
│ │
┌──┬──┬──┬──┬──┬──┼──┤
│ │ │ │ │ │ │ │
├──┼──┼──┼──┼──┼──┼──┤
│ │ │ │ │ │ │ │
├──┼──┼──┼──┼──┼──┼──┤
│ │ │ │ │ │ │ │
├──┼──┼──┼──┼──┼──┼──┤
│ │ │ │ │ │ │ │
├──┼──┴──┴──┴──┴──┴──┘
│ │
└──┘
Y algunos son asimétricos , como el mes anterior, el March of 2018:
March 2018
┌──┬──┬──┬──┐
│ │ │ │ │
┌──┬──┬──┼──┼──┼──┼──┤
│ │ │ │ │ │ │ │
├──┼──┼──┼──┼──┼──┼──┤
│ │ │ │ │ │ │ │
├──┼──┼──┼──┼──┼──┼──┤
│ │ │ │ │ │ │ │
├──┼──┼──┼──┼──┼──┼──┘
│ │ │ │ │ │ │
└──┴──┴──┴──┴──┴──┘
Tarea
Tome una entrada en forma de fecha , por ejemplo:
2018.042018.032010.021996.02
Salida de la simetría correspondiente , p. Ej.
2018.04->centrally symmetric2018.03->asymmetric2010.02->symmetric1996.02->centrally symmetric
Reglas
- Este es el código de golf, por lo que gana el menor número de bytes.
- Las lagunas estándar obviamente no están permitidas.
- Suponga que la semana comienza con el lunes (gracias a Angs y Arnauld por su sugerencia).
- Considere solo años entre 1900 y 2100 ( inclusive ).
- Las reglas de formato de entrada y salida son permisivas , lo que significa que puede usar cualquier formato equivalente que sea nativo del idioma que elija.
- Base su solución en el calendario gregoriano .

f(x)para cadaxen una lista". ¿Qué pasa con "tomar una entrada en forma de fecha"?Respuestas:
JavaScript (ES6), 55 bytes
Guardado 6 bytes gracias a @Neil
Toma entrada en la sintaxis de curry
(year)(month). Devuelvefalsepara asimétrico,truepara centralmente simétrico y0para completamente simétrico.Pruébalo en línea!
¿Cómo?
Definimos la función g () que devuelve el día de la semana de aaaa / mm / 01 , como un entero entre 0 = lunes y 6 = domingo.
Porque getDay () devuelve de forma nativa 0 = domingo a 6 = sábado, cambiamos el resultado al rango esperado al consultar el séptimo día.
Luego definimos:
Porque el constructor de Date espera un mes indexado en 0 y porque g () disminuye m después de pasarlo a Date , en realidad primero calculamos el día de la semana del primer día del mes siguiente y luego agregamos el del día actual.
Meses completamente simétricos
Los meses completamente simétricos comienzan con un lunes y son seguidos por un mes que también comienza con un lunes. Esto solo es posible para febrero de un año no bisiesto.
Esto lleva a n = 0 .
Meses centralmente simétricos
Los meses centralmente simétricos son meses para los cuales la suma del día de la semana de su primer día y la del mes siguiente es 7 .
De ahí la segunda prueba: n == 7 .
No incorporado, 93 bytes
Utiliza la congruencia de Zeller . Mismo formato de E / S que la otra versión.
Pruébalo en línea!
fuente
true,falsey enfilenotfoundlugar de0...g=m=>new Date(y,m,7).getDay()ahorra 6 bytes.T-SQL , 213 bytes (reglas estrictas de E / S)
La consulta anterior considera las estrictas reglas de formato de entrada / salida.
La entrada se toma de la columna
sde una tabla llamadat:Sin golf:
SQLFiddle 1
T-SQL , 128 bytes (reglas de E / S permisivas)
Si se puede cambiar el formato de la entrada y de la salida, elegiría ingresar el primer día del mes, en una
datetimecolumna llamadad:El resultado sería 1 para asimétrico, 0 para simétrico, NULL para centralmente simétrico.
Si podemos ejecutarlo en un servidor (o con un inicio de sesión) configurado para el idioma BRITÁNICO, podemos eliminar el
SET DATEFIRST 1ahorro de 15 bytes más.SQLFiddle 2
fuente
CONVERT(DATETIME,s+'.01')lugar deREPLACE. También puede colocar el espacio enFROM (SELECTDATEFORMATconfiguración. Por ejemplo, si usamosSET LANGUAGE BRITISH,CONVERT(DATETIME,'2018.02.01')sería el 2 de enero, en lugar del 1 de febrero.Haskell, 170 bytes
Devuelve 2 para centralmente simétrico, 1 para simétrico y 0 para asimétrico
fuente
Python 2,
118104bytes¡Gracias a Jonathan Allan y Dead Possum por las mejoras!
Python 3,
122105bytesEntrada
Salida
fuente
YoM), por lo que actualmente es un fragmento e inválido.input()Sin embargo, si cambia las variables a llamadas , esto estará perfectamente bien._[0]+_[-1]->sum(..)Rojo ,
199,168161 bytesPruébalo en línea!
0 - asimétrico
1 - simétrico
2 - centralmente simétrica
Más legible:
fuente
Mathematica, 137 bytes
Pura función. Toma el año y el mes como entrada y retornos
-1para meses asimétricos,0para meses simétricos centralmente y1para meses completamente simétricos. No estoy seguro de por qué este idioma no puede convertir de un día de la semana a un número de forma predeterminada ...fuente
Bash + utilidades GNU, 70
La entrada está formateada como
YYYY/MM.La salida es numérica, como sigue:
Supongo que este formato de salida es aceptable para esta pregunta.
Pruébalo en línea!
fuente
C, 111 bytes
Invoque
f(year, month), 0 para completamente simétrico, 1 para asimétrico, 2 para centralmente simétrico.fuente
returncony=(el primer parámetro) y cayendo de la función.Perl 6 , 74 bytes
Bloque desnudo, implícitamente una función de 1 argumento, una cadena como
"2012-02". Devoluciones:Cuando el patrón es simétrico, a medida que .day-of-week aumenta en 1, .days-in-month necesitaría moverse en 2 para seguir coincidiendo (el mes comenzaría un día más tarde pero debería terminar un día antes ), asi que
2 * .day-of-week + .days-in-monthnos da una medida de esa brecha. Módulo 7, debería ser 1 para obtener simetría, pero primero podemos verificar de forma económica el febrero sin salto comprobando ese total antes del módulo (lunes y 28 días por mes es la combinación mínima posible).Me sorprende que esto tome tantos bytes, pero se necesitan 36 bytes para hacer una fecha y obtener el día de la semana y los días de ese mes.
fuente