Contactos

Cuántos meses pasaron entre dos fechas. ¿Cómo es una fórmula matemática por el número del mes para calcular el número de días en ella? ¿Cuántos días entre fechas? Instrucción

Nota: Esta publicación es la traducción del artículo cmcenroe.me/2014/12/05/days-in-month-formula.html ( Parte I.), así como el complemento con derechos de autor ( Parte II.). No debe ser tratado en serio, sino como un calentamiento para la mente, que no requiere más que el conocimiento escolar de la aritmética y que no tenga aplicación práctica. Toda la lectura agradable!

Parte I.

Introducción

Recientemente, después de otra noche de insomnio, pensé en los métodos de memorización de la cantidad de días en cada mes del año. Para hacer esto, hay un conteo, así como la forma de considerar los dedos en los nudillos, pero ni uno ni el otro me arreglaron. Pensé, y si hay alguna fórmula matemática para resolver esa tarea, y sin encontrarlo cuando desencadené el estudio, lanzé un desafío para crearlo.

Formalizando en otras palabras, es necesario encontrar una característica. f.tal que el valor f (x) Por cada mes x.Representado por un número de 1 a 12 es igual a la cantidad de días de este mes. Tabla de argumento y valores de función:

x. 1 2 3 4 5 6 7 8 9 10 11 12
f (x) 31 28 31 30 31 30 31 31 30 31 30 31

Si tiene un deseo de esforzarte antes de leer mi decisión, ahora es hora. Si prefiere ver inmediatamente la respuesta listaizada, busque debajo del spoiler.

Respuesta


A continuación se muestran mis pasos para encontrar una solución.

Aparato matemático

Primero, estábamos borrachos en la memoria Dos vitales para resolver esta tarea del operador: división de enteros y saldo de la división.

División enteraeste es un operador utilizado en muchos lenguajes de programación al dividir dos enteros y descartar de privado parte fraccional. Lo representaré como. Por ejemplo:

Resto de la división Este es un operador que es un LED de la División. En muchos lenguajes de programación, se aplica un símbolo. % , Usaré el diseño del tipo, por ejemplo:

Observo que el balance de división tiene una prioridad igual con la división.

Lo esencial

Entonces, aplicamos nuestro aparato matemático para obtener la fórmula básica. Como un mes normal, 30 o 31 días, por lo que podemos usar para obtener alternativamente 1 o 0, y luego simplemente agregue a este número la constante:

Recibimos la tabla, se asignan los valores correctos:
x. 1 2 3 4 5 6 7 8 9 10 11 12
f (x) 31 30 31 30 31 30 31 30 31 30 31 30

¡Buen comienzo! Ya hay valores correctos para enero y durante meses de marzo a julio inclusive. Febrero es un caso especial, y lo haremos un poco más tarde. Después de julio, para los meses restantes, el orden de obtener 0 y 1 debe cambiarse a lo contrario.
Para esto, podemos agregar a Delimo 1:

x. 1 2 3 4 5 6 7 8 9 10 11 12
f (x) 30 31 30 31 30 31 30 31 30 31 30 31

Ahora los valores correctos de agosto a diciembre, pero, como se suponía, los valores de otros meses son incorrectos. Veamos cómo podemos combinar estas fórmulas.

Superposición de máscara

Para hacer esto, se necesita una función específica de partes, pero, ya que me pareció que me pareció: pensé en otra solución de soluciones utilizando una parte de la función en el mismo intervalo, el otro en el otro.
Creo que la forma más fácil de encontrar una expresión igual a 1 en un área de aplicación y 0 en el resto. El método en el que hay un argumento de multiplicación a la expresión que excluimos de la fórmula fuera del campo de su uso, llamé "la imposición de una máscara", por lo tanto, tal comportamiento es similar a un poco de máscara de bits.
Para aplicar este método, en la última parte de nuestra función, es necesario encontrar una expresión igual a 1 en, y, dado que los valores del argumento son siempre menos que 16, para este propósito, es perfectamente adecuado para un entero División por 8.
x. 1 2 3 4 5 6 7 8 9 10 11 12
x. ⁄ 8 ⌋ 0 0 0 0 0 0 0 1 1 1 1 1

Ahora con esta máscara, utilizando la expresión en la división en lugar de 1, podemos reemplazar la formulación de 0 y 1 fórmula para revertir:

x. 1 2 3 4 5 6 7 8 9 10 11 12
f (x) 31 30 31 30 31 30 31 31 30 31 30 31

¡EUREKA! Eso es correcto, excepto febrero. Sorpresa sorpresa.

febrero

En cualquier mes, 30 o 31 días, excepto en febrero, con su 28 (año bisiesto, ir más allá de esta tarea). En este momento, de acuerdo con nuestra fórmula en ella, 30 días, por lo que sería bueno restar una expresión igual a 2 en.
Lo mejor que logré encontrarlo, lo que impone una máscara durante todos los meses después de febrero:
x. 1 2 3 4 5 6 7 8 9 10 11 12
2 mod. x. 0 0 2 2 2 2 2 2 2 2 2 2

Al cambiar la constante básica por 28 con la adición de 2 al resto del mes obtendremos la fórmula:

x. 1 2 3 4 5 6 7 8 9 10 11 12
f (x) 29 28 31 30 31 30 31 31 30 31 30 31

Desafortunadamente, enero ahora es más corto durante 2 días. Pero, afortunadamente, para obtener una expresión que se aplicará solo para el primer mes es muy fácil: se redondea por lo contrario. Multiplicándolo en 2 obtenemos la fórmula final:

x. 1 2 3 4 5 6 7 8 9 10 11 12
f (x) 31 28 31 30 31 30 31 31 30 31 30 31

Palabra después

Aquí es una fórmula para obtener el número de días en cualquier mes del año, utilizando la aritmética más simple. La próxima vez que recuerde cuántos días de septiembre, simplemente realice con esta función de una sola línea en JavaScript:

Función F (x) (devuelva 28 + (x + matemáticas.floor (x / 8))% 2 + 2% x + 2 * matemath.floor (1 / x);)

Parte II.

Introducción

En la primera parte, se obtuvo una fórmula corta e incluso ligeramente elegante, las principales ventajas de las cuales son la simplicidad del aparato matemático, la falta de ramas y expresiones condicionales, la concisión. Las desventajas son además de que no lo aplicará en su proyecto, puede incluir la falta de comprobación de un año viscoso y no de salto.
Así que configuro una tarea para crear una función f.tal que el valor f (x, y) Por cada mes x.Representado por el número de 1 a 12 y año. y, más 0, es igual a la cantidad de días del mes. x. en el año y.
Para impacientes bajo el spoiler, hay una respuesta preparada, le pido que el resto me siga.

Respuesta

Resto de la división: modificación. y ⌊⌋

Para la claridad visual, estamos de acuerdo en que en algunas fórmulas, el operador de la división con el residuo se reemplaza por paréntesis más bajos, donde me pareció necesario:

Año bisiesto

Se introduce un día calendario adicional en el año bisiesto: 29 de febrero. Como se sabe, el salto es un año, varios 4 y no un múltiplo 100, o un múltiplo de 400. Escribimos una expresión idéntica a esta declaración:

Para llevar esta expresión al algebraico, es necesario aplicar al resultado de una inyección de expresión de la forma:

Lo que permitirá obtener 1 al dividir sin un residuo y 0 al dividir con el residuo para usarlo en la fórmula para determinar el número de días en un mes.

Como una función g " Puede usar 1 minus saldo de la división para:

x. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
g "(x) Infinito. 1 0 0 0 0 0 0 0 0 0 0 0 0 0

Es fácil notar que al aumentar la división y divisor en 1 obtendremos la fórmula correcta cuando:
x. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
g "(x) 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Por lo tanto, la expresión escribirá como:


Y escribe la expresión como:

Aplicando este enfoque obtenemos la siguiente función. g (y), cuyo valor será 1 si el año es saltando, o 0 en el caso opuesto:

y 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000
g (y) 0 0 1 0 0 0 1 0 0 0 1
y 2000 2100 2200 2300 2400 2500 2600 2700 2800 2900 3000
g (y) 1 0 0 0 1 0 0 0 1 0 0

El año biliar fue aislado.

Le recuerdo que en el marco del acuerdo adoptado, el operador de obtener un equilibrio de la división se puede representar como modificación.y ⌊⌋.

Superposición de máscara

En la fórmula, parte es una enmienda que agrega 2 días a enero. Si elimina el multiplicador 2 y en el numerador para reemplazar 1 en 2, entonces esta fórmula agregará 2 días a enero y 1 día para febrero, lo que nos da la clave para la adición del día en el año del salto. Para mayor claridad, uso en el valor intermedio de la fórmula. g (y) y en calidad y Utilizamos 2000 (saltos) y 2001 (no saltando) años:

x. 1 2 3 4 5 6 7 8 9 10 11 12
f (x, 2000) 31 29 31 30 31 30 31 31 30 31 30 31
f (x, 2001) 30 28 31 30 31 30 31 31 30 31 30 30

Los valores para todos los meses, excepto para enero, no es cierto un año bisiesto.

Para corregir estos molestos malentendidos, agregue al 1 de enero. El día ya conocido por la fórmula:


O:

x. 1 2 3 4 5 6 7 8 9 10 11 12
f (x, 2000) 31 29 31 30 31 30 31 31 30 31 30 31
f (x, 2001) 31 28 31 30 31 30 31 31 30 31 30 30

Conclusión

Como resultado, ya se obtiene significativamente más engorroso, pero una fórmula más universal, que también se puede usar para obtener el número de días en un mes de cierto año:

Función F (x, y) (retorno 28 + ((x + matemath.floor (x / 8)% 2) + 2% x + matemath.floor ((1 + (1 - (y% 4 + 2)% (y% 4 + 1)) * (((((((((y% 100 + 2)% (y% 100 + 1)) + (1 - (y% 400 + 2)% (y% 400 + 1))) / x + Matemath.floor (1 / x) - matematica.floor (((((1 - (y% 4 + 2)% (y% 4 + 1)) * ((y% 100 + 2)% (y% 100 + 1)) + (1 - (y% 400 + 2)% (y% 400 + 1))) / x);)
Ejemplo en C # Ideone.com/fanutz.

1 . No sé cómo usar un mnemónico similar, así que espié la tableta en Internet.
2 . "Conceptos básicos", o "Regla con muchas excepciones", como la mayoría de las reglas.
3 . Inicialmente, en el calendario romano, febrero fue el último mes del año, por lo que hay lógica que es más corta que todos los demás. También hay lógica para agregar o eliminar el día al final del año, por lo que su longitud es una variable.

UPP. uno:
Traducción alternativa de la primera parte en

Calculadora de contorno en línea gratuita. Los Buchelli lo ayudarán y le dirán cuántos días han pasado entre las dos fechas específicas. Además, si tiene la necesidad, puede calcular la cantidad de calendarios, los fines de semana o los días hábiles (horas) contiene el período especificado del año o varios años.

¿Cuántos días entre fechas? Instrucción

Acabas de hacer un día específico del principio y finalizar y obtener el cálculo a través de la parte de segundos. Todas las calculadoras de datos en línea creen de forma independiente. Si cambia los días iniciales de la semana, el resultado se recalcula automáticamente, teniendo en cuenta el año bisiesto.

IMPORTANTE: Es imposible tomar de los cálculos durante los indicadores del año pasado de los días de trabajo / horas por mes y proporcionar como cálculos: los datos serán diferentes. Por lo tanto, es mejor usar la calculadora.

Entonces, el procedimiento:

  1. En los campos "Fecha primaria" y "Fecha final", elija el día inicial y final de la referencia, a partir de 2013 y finalizar en el futuro 2018.
  2. Instale el número de horas de trabajo en el siguiente campo. De forma predeterminada, este campo ya tiene 8 horas (semana laboral de 40 horas), pero puede cambiar esta figura.
  3. En el lado derecho de la pantalla en el banner, verá el resultado obtenido: días hábiles, días calendario y horas de trabajo entre fechas especificadas. Los resultados deben ser copiados y guardados en su documento.

Para lo que se puede utilizar calculadora

  1. Para calcular sanciones y vencidos en contratos.
  2. Cómo entender la efectividad del uso de algún recurso y límite de plazos.
  3. ¿Qué tan accidentalmente no debe asignar el tiempo de la tarea del fin de semana?
  4. Cuanto tiempo queda al plazo

Ejemplo:

Eres un contador. La cabeza le preguntó en la próxima pareja de minutos para proporcionar datos sobre el número de horas de trabajo, que todos los empleados de la compañía en febrero deberían funcionar. El número de trabajadores que puede determinar fácilmente, tiene números ante sus ojos. Pero, ¿se debe considerar la cantidad de horas ... y cuántos días en febrero? ¿Y el año es un salto? ¿Y qué días fueron los fines de semana? ¿Cómo determinar el número de días de vacaciones?

Solución: solo usa nuestro widget. Toda la información que recibirá automáticamente, no necesita calendarios y calculadores de escritorio.

¿Te gustó esta calculadora? Luego prueba nuestras otras oportunidades.

¿Quieres mantener la contabilidad, enviar informes y hacer cálculos en un servicio web conveniente y simple? Probando gratis 14 días de esquema. BUCHETTER! ¡Le enseñaremos rápidamente cómo usar el servicio y responder a todas las preguntas!

Para resolver algunas tareas, al crear una tabla, necesita en una celda separada o dentro de la fórmula, especifique el número de días en un mes para que el programa tenga los cálculos necesarios. Excel tiene herramientas destinadas a realizar esta operación. consideremos varios métodos Aplicaciones de esta característica.

Calcule el número de días en un mes en Excele utilizando operadores de categoría especial "Fecha y hora". Para averiguar exactamente qué opción es mejor aplicar, lo que necesita, en primer lugar, establecer los objetivos de la operación. Dependiendo de esto, el resultado del cálculo se puede descargar en un elemento separado en una hoja, y también se puede usar dentro de otra fórmula.

Método 1: Combinación de operadores Día y Conmines

La mayoría manera simple Resuelve esta tarea es una combinación de operadores. DÍA y Konmena.

Función DÍA Pertenece al grupo de operadores. "Fecha y hora". Indica un número específico de 1 antes de 31 . En nuestro caso, la tarea. este operador Habrá una indicación último día Meses con la función incorporada en forma de argumento. Konmena.

Operador de sintaxis DÍA siguiente:

Día (date_v_)

Es decir, el único argumento de esta característica es "Fecha en formato numérico". Le pedirá al operador Konmena. Debe decirse que la fecha en el formato numérico difiere del formato habitual. Por ejemplo, la fecha 04.05.2017 En una forma numérica se verá como 42859 . Por lo tanto, este formato Excel utiliza solo para operaciones internas. Rara vez se usa para mostrar en celdas.

Operador Konmena Diseñado para indicar el número de secuencia del último día del mes, que se encuentra en el número especificado de meses de anticipación o de vuelta desde la fecha especificada. La función de sintaxis es:

Conmines (nach_data; number_mets)

Operador "Fecha primaria" Contiene una fecha a partir de la cual se realiza la cuenta regresiva o un enlace a la celda, donde se encuentra.

Operador "Número de meses" Indica el número de meses a los cuales la cuenta regresiva debe ser la cuenta regresiva.

Ahora veamos cómo funciona en ejemplo específico. Para hacer esto hoja de ExcelA una de las células de las cuales se inscribe un cierto número de calendario. Es necesario utilizar el conjunto anterior de operadores para determinar cuántos días en el período mensual al que se refiere este número.


Formula general Tomamos el siguiente formulario:

Día (convencer (B3; 0))

En esta fórmula, el valor de la variable es solo la dirección celular ( B3.). Por lo tanto, si no desea realizar el procedimiento a través de Funciones de Masters, Puede insertar esta fórmula en cualquier elemento de la hoja, simplemente reemplazando la dirección celular que contiene el número a uno que sea relevante en su caso. El resultado será similar.

Método 2: Determinación automática del número de días.

Ahora veamos otra tarea. Se requiere que el número de días no se muestre en un número de calendario dado, pero en la corriente. Además, el cambio de períodos se llevaría a cabo automáticamente sin la participación del usuario. Aunque parece extraño, pero esta tarea es más fácil que la anterior. Para resolverlo, incluso abierto. Maestro de funciones No hay necesidad, ya que la fórmula que realiza esta operación no contiene variables o enlaces a celdas. Solo puede conducir a la celda de la hoja donde desea mostrar el resultado, la siguiente fórmula sin cambios:

Día (diablo (hoy (); 0))

La función incorporada hoy, que aplicamos en este caso muestra el número de hoy y no tiene argumentos. Por lo tanto, en su celda, se mostrará el número de días en el mes actual.

Método 3: Cálculo del número de días de uso en fórmulas complejas

En los ejemplos anteriores, mostramos cómo realizar el cálculo del número de días en un mes a lo largo del número de calendario especificado o automáticamente en el mes actual con la salida del resultado en una celda separada. Pero puede ser necesario encontrar este valor para calcular otros indicadores. Al mismo tiempo, el cálculo del número de días se llevará a cabo dentro de la fórmula compleja y no se mostrará en una celda separada. Veamos cómo hacer esto en el ejemplo.

Necesitamos hacerlo para que se queden el número de días hasta que se muestre el final del mes actual en la celda. Como en el método anterior, esta opción no requiere apertura. Funciones de Masters. Simplemente puede conducir a la celda la siguiente expresión:

Día (conmines (hoy (); 0)) - día (hoy ())

Después de eso, la cantidad de días hasta que se mostrará el final del mes en la celda especificada. Todos los días, el resultado se actualizará automáticamente, y desde el comienzo del nuevo período, el conteo comenzará nuevamente. Resulta un tipo de temporizador de cuenta regresiva.

Como vemos, la fórmula especificada consta de dos partes. El primero de ellos es una expresión ya familiar del cálculo del número de días en un mes:

Día (diablo (hoy (); 0))

Pero en la segunda parte, se resta de este indicador de hoy:

Día a día ())

Por lo tanto, al realizar este cálculo, la fórmula para calcular el número de días es parte de Fórmula más compleja.

Método 4: Fórmula alternativa

Pero, desafortunadamente, las versiones del programa anterior Excel 2007 faltan al operador Konmena. ¿Cómo ser los usuarios que usan versiones antiguas de la aplicación? Para ellos, tal oportunidad existe a través de otra fórmula, que es más masiva de lo descrita anteriormente. Veamos cómo calcular la cantidad de días en un mes a lo largo del número de calendario especificado usando esta opción.

  1. Seleccione la celda para emitir el resultado y vaya a la ventana Argumentos del operador DÍA Ya familiares para nosotros. Instale el cursor en el único campo de esta ventana y haga clic en el triángulo invertido a la izquierda de la cadena de fórmulas. Ir a la sección "Otras funciones ...".
  2. En la ventana Funciones de Masters en un grupo "Fecha y hora" Asignar el nombre "FECHA" y haga clic en el botón OK.
  3. Se lanzó la ventana del operador. FECHA. Esta característica convierte la fecha del formato habitual a valor numéricoque luego se manejará el operador DÍA.

    La ventana que se abrió tiene tres campos. En campo "Día" Puede ingresar inmediatamente el número "uno". Será una acción sin cambios para cualquier situación. Pero otros dos campos tendrán que hacerlo a fondo.

    Instale el cursor en el campo "Año". A continuación, vaya a la selección de operadores a través de un triángulo familiar.

  4. Todo en la misma categoría Funciones de Masters Asignar el nombre "AÑO" y haga clic en el botón OK.
  5. La ventana Argumentos del operador comienza AÑO. Define el año en el número especificado. En la única ventana de la ventana. "Fecha en formato numérico" Indique un enlace a una celda que contiene la fecha de inicio para la que necesita determinar el número de días. Después de eso, no se apresure, haga clic en el botón. OKy haz clic en el nombre "FECHA" en la fila de fórmula.
  6. Luego regresamos a la ventana de argumento. FECHA. Instale el cursor en el campo "Mes" y ir a la elección de las funciones.
  7. EN Funciones del asistente Clic por nombre "MES" y haga clic en el botón OK.
  8. Se inicia la ventana Argumentos de la función. MES. Sus tareas son similares al operador anterior, solo muestra el número del mes. En el único campo de esta ventana, establecemos la misma referencia al número original. Luego, en la fila de fórmula, haga clic por nombre "DÍA".
  9. Volver a la ventana de argumento DÍA. Aquí tenemos que hacer solo un código de barras pequeño. En la ventana única de la ventana, en la que los datos ya están ubicados, agregue una expresión al final de la fórmula "-uno" sin cotizaciones, así como configurar "+1" después del operador MES. Después de ese clic en el botón OK.
  10. Como podemos ver, en la celda preescritura, el número de días en el mes, al que pertenece el número especificado. La fórmula general tiene este tipo:

    Día (fecha (año (d3); mes (d3) +1; 1) -1)

El secreto de esta fórmula es simple. Determinaremos la fecha del día siguiente del próximo período, y luego tomaremos un día, recibiendo el número de días en el mes especificado. La magnitud variable en esta fórmula es un enlace a la celda. D3. en dos lugares. Si lo reemplaza con la dirección de la celda en la que se encuentra la fecha en su caso particular, simplemente puede conducir esta expresión a cualquier elemento de la hoja sin ayuda. Funciones de Masters.

Como puede ver, hay varias opciones para averiguar el número de días en un mes en Excel. Lo que exactamente para usar depende del objetivo final del usuario, así como de la versión del programa que usa.

La calculadora de fechas está diseñada para calcular el número de días entre las fechas, así como para encontrar la fecha agregando o restando un cierto número de días a la fecha conocida.

Añadir dias hasta la fecha

Para saber qué número pasará a través de un cierto número de días, use esta opción. Ingrese la fecha de inicio y el número de días para agregarlo. Para la resta, use el valor con un menos. La calculadora también tiene una opción para agregar solo días hábiles.

Cálculo del número de días entre las fechas.

Este método de cálculo responderá a la pregunta "cuántos días han pasado desde la fecha". Ingrese la fecha de inicio y la fecha de finalización y haga clic en el botón "Calcular". La calculadora mostrará cuántos días ingresados \u200b\u200bentre las fechas ingresadas. La calculadora por separado mostrará el número de días hábiles.

Con esta opción, puede calcular cuántos días se fueron a un evento determinado, por ejemplo, antes del cumpleaños o las vacaciones. Para hacer esto, en el campo Fecha inicial, especifique el número actual, y en el campo Fecha de finalización: la fecha de los eventos.

Vacaciones

La calculadora puede calcular, agregar y deducir tanto los días calendario como los trabajadores. Oficial no funciona días festivos están:

  • 1,2,3,6,8 Enero - Vacaciones de año nuevo
  • 7 de enero - Navidad ortodoxa
  • 23 de febrero - Defensor del Día de la Patria.
  • 8 de marzo - Día Internacional de la Mujer.
  • 1 de mayo - vacaciones de primavera y trabajo
  • 9 de mayo - Día de la Victoria
  • 12 de junio - Día ruso
  • 4 de noviembre - Día de la unidad de las personas.

Si el día festivo cayó el sábado o el domingo, se transfiere al día laborable más cercano. Pero a veces el fin de semana se transfiere a otro lugar del calendario. Por ejemplo, el sábado y el domingo, que cayó en las vacaciones de Año Nuevo, se puede transferir a mayo para extender los días festivos.

Calculadora Al calcular los días tiene en cuenta ambas fechas festivas oficiales y todas las transferencias.

Nota: Esta publicación es la traducción del artículo cmcenroe.me/2014/12/05/days-in-month-formula.html ( Parte I.), así como el complemento con derechos de autor ( Parte II.). No se relaciona con el material en serio, sino como un calentamiento para la mente que no requiere más que el conocimiento escolar de la aplicación aritmética y no práctica. Toda la lectura agradable!

Parte I.

Introducción

Recientemente, después de otra noche de insomnio, pensé en los métodos de memorización de la cantidad de días en cada mes del año. Para hacer esto, hay un conteo, así como la forma de considerar los dedos en los nudillos, pero ni uno ni el otro me arreglaron. Pensé, y si hay alguna fórmula matemática para resolver esa tarea, y sin encontrarlo cuando desencadené el estudio, lanzé un desafío para crearlo.

Formalizando en otras palabras, es necesario encontrar una característica. f.tal que el valor f (x) Por cada mes x.Representado por un número de 1 a 12 es igual a la cantidad de días de este mes. Tabla de argumento y valores de función:

x. 1 2 3 4 5 6 7 8 9 10 11 12
f (x) 31 28 31 30 31 30 31 31 30 31 30 31

Si tiene un deseo de esforzarte antes de leer mi decisión, ahora es hora. Si prefiere ver inmediatamente la respuesta listaizada, busque debajo del spoiler.

Respuesta


A continuación se muestran mis pasos para encontrar una solución.

Aparato matemático

Primero, estábamos borrachos en la memoria Dos vitales para resolver esta tarea del operador: división de enteros y saldo de la división.

División enteraeste es un operador utilizado en muchos lenguajes de programación al dividir dos enteros y descartarse de una parte fraccional privada. Lo representaré como. Por ejemplo:

Resto de la división Este es un operador que es un LED de la División. En muchos lenguajes de programación, se aplica un símbolo. % , Usaré el diseño del tipo, por ejemplo:

Observo que el balance de división tiene una prioridad igual con la división.

Lo esencial

Entonces, aplicamos nuestro aparato matemático para obtener la fórmula básica. Como un mes normal, 30 o 31 días, por lo que podemos usar para obtener alternativamente 1 o 0, y luego simplemente agregue a este número la constante:

Recibimos la tabla, se asignan los valores correctos:
x. 1 2 3 4 5 6 7 8 9 10 11 12
f (x) 31 30 31 30 31 30 31 30 31 30 31 30

¡Buen comienzo! Ya hay valores correctos para enero y durante meses de marzo a julio inclusive. Febrero es un caso especial, y lo haremos un poco más tarde. Después de julio, para los meses restantes, el orden de obtener 0 y 1 debe cambiarse a lo contrario.
Para esto, podemos agregar a Delimo 1:

x. 1 2 3 4 5 6 7 8 9 10 11 12
f (x) 30 31 30 31 30 31 30 31 30 31 30 31

Ahora los valores correctos de agosto a diciembre, pero, como se suponía, los valores de otros meses son incorrectos. Veamos cómo podemos combinar estas fórmulas.

Superposición de máscara

Para hacer esto, se necesita una función específica de partes, pero, ya que me pareció que me pareció: pensé en otra solución de soluciones utilizando una parte de la función en el mismo intervalo, el otro en el otro.
Creo que la forma más fácil de encontrar una expresión igual a 1 en un área de aplicación y 0 en el resto. El método en el que hay un argumento de multiplicación a la expresión que excluimos de la fórmula fuera del campo de su uso, llamé "la imposición de una máscara", por lo tanto, tal comportamiento es similar a un poco de máscara de bits.
Para aplicar este método, en la última parte de nuestra función, es necesario encontrar una expresión igual a 1 en, y, dado que los valores del argumento son siempre menos que 16, para este propósito, es perfectamente adecuado para un entero División por 8.
x. 1 2 3 4 5 6 7 8 9 10 11 12
x. ⁄ 8 ⌋ 0 0 0 0 0 0 0 1 1 1 1 1

Ahora con esta máscara, utilizando la expresión en la división en lugar de 1, podemos reemplazar la formulación de 0 y 1 fórmula para revertir:

x. 1 2 3 4 5 6 7 8 9 10 11 12
f (x) 31 30 31 30 31 30 31 31 30 31 30 31

¡EUREKA! Eso es correcto, excepto febrero. Sorpresa sorpresa.

febrero

En cualquier mes, 30 o 31 días, excepto en febrero, con su 28 (año bisiesto, ir más allá de esta tarea). En este momento, de acuerdo con nuestra fórmula en ella, 30 días, por lo que sería bueno restar una expresión igual a 2 en.
Lo mejor que logré encontrarlo, lo que impone una máscara durante todos los meses después de febrero:
x. 1 2 3 4 5 6 7 8 9 10 11 12
2 mod. x. 0 0 2 2 2 2 2 2 2 2 2 2

Al cambiar la constante básica por 28 con la adición de 2 al resto del mes obtendremos la fórmula:

x. 1 2 3 4 5 6 7 8 9 10 11 12
f (x) 29 28 31 30 31 30 31 31 30 31 30 31

Desafortunadamente, enero ahora es más corto durante 2 días. Pero, afortunadamente, para obtener una expresión que se aplicará solo para el primer mes es muy fácil: se redondea por lo contrario. Multiplicándolo en 2 obtenemos la fórmula final:

x. 1 2 3 4 5 6 7 8 9 10 11 12
f (x) 31 28 31 30 31 30 31 31 30 31 30 31

Palabra después

Aquí es una fórmula para obtener el número de días en cualquier mes del año, utilizando la aritmética más simple. La próxima vez que recuerde cuántos días de septiembre, simplemente realice con esta función de una sola línea en JavaScript:

Función F (x) (devuelva 28 + (x + matemáticas.floor (x / 8))% 2 + 2% x + 2 * matemath.floor (1 / x);)

Parte II.

Introducción

En la primera parte, se obtuvo una fórmula corta e incluso ligeramente elegante, las principales ventajas de las cuales son la simplicidad del aparato matemático, la falta de ramas y expresiones condicionales, la concisión. Las desventajas son además de que no lo aplicará en su proyecto, puede incluir la falta de comprobación de un año viscoso y no de salto.
Así que configuro una tarea para crear una función f.tal que el valor f (x, y) Por cada mes x.Representado por el número de 1 a 12 y año. y, más 0, es igual a la cantidad de días del mes. x. en el año y.
Para impacientes bajo el spoiler, hay una respuesta preparada, le pido que el resto me siga.

Respuesta

Resto de la división: modificación. y ⌊⌋

Para la claridad visual, estamos de acuerdo en que en algunas fórmulas, el operador de la división con el residuo se reemplaza por paréntesis más bajos, donde me pareció necesario:

Año bisiesto

Se introduce un día calendario adicional en el año bisiesto: 29 de febrero. Como se sabe, el salto es un año, varios 4 y no un múltiplo 100, o un múltiplo de 400. Escribimos una expresión idéntica a esta declaración:

Para llevar esta expresión al algebraico, es necesario aplicar al resultado de una inyección de expresión de la forma:

Lo que permitirá obtener 1 al dividir sin un residuo y 0 al dividir con el residuo para usarlo en la fórmula para determinar el número de días en un mes.

Como una función g " Puede usar 1 minus saldo de la división para:

x. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
g "(x) Infinito. 1 0 0 0 0 0 0 0 0 0 0 0 0 0

Es fácil notar que al aumentar la división y divisor en 1 obtendremos la fórmula correcta cuando:
x. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
g "(x) 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Por lo tanto, la expresión escribirá como:


Y escribe la expresión como:

Aplicando este enfoque obtenemos la siguiente función. g (y), cuyo valor será 1 si el año es saltando, o 0 en el caso opuesto:

y 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000
g (y) 0 0 1 0 0 0 1 0 0 0 1
y 2000 2100 2200 2300 2400 2500 2600 2700 2800 2900 3000
g (y) 1 0 0 0 1 0 0 0 1 0 0

El año biliar fue aislado.

Le recuerdo que en el marco del acuerdo adoptado, el operador de obtener un equilibrio de la división se puede representar como modificación.y ⌊⌋.

Superposición de máscara

En la fórmula, parte es una enmienda que agrega 2 días a enero. Si elimina el multiplicador 2 y en el numerador para reemplazar 1 en 2, entonces esta fórmula agregará 2 días a enero y 1 día para febrero, lo que nos da la clave para la adición del día en el año del salto. Para mayor claridad, uso en el valor intermedio de la fórmula. g (y) y en calidad y Utilizamos 2000 (saltos) y 2001 (no saltando) años:

x. 1 2 3 4 5 6 7 8 9 10 11 12
f (x, 2000) 31 29 31 30 31 30 31 31 30 31 30 31
f (x, 2001) 30 28 31 30 31 30 31 31 30 31 30 30

Los valores para todos los meses, excepto para enero, no es cierto un año bisiesto.

Para corregir estos molestos malentendidos, agregue al 1 de enero. El día ya conocido por la fórmula:


O:

x. 1 2 3 4 5 6 7 8 9 10 11 12
f (x, 2000) 31 29 31 30 31 30 31 31 30 31 30 31
f (x, 2001) 31 28 31 30 31 30 31 31 30 31 30 30

Conclusión

Como resultado, ya se obtiene significativamente más engorroso, pero una fórmula más universal, que también se puede usar para obtener el número de días en un mes de cierto año:

Función F (x, y) (retorno 28 + ((x + matemath.floor (x / 8)% 2) + 2% x + matemath.floor ((1 + (1 - (y% 4 + 2)% (y% 4 + 1)) * (((((((((y% 100 + 2)% (y% 100 + 1)) + (1 - (y% 400 + 2)% (y% 400 + 1))) / x + Matemath.floor (1 / x) - matematica.floor (((((1 - (y% 4 + 2)% (y% 4 + 1)) * ((y% 100 + 2)% (y% 100 + 1)) + (1 - (y% 400 + 2)% (y% 400 + 1))) / x);)
Ejemplo en C # Ideone.com/fanutz.

1 . No sé cómo usar un mnemónico similar, así que espié la tableta en Internet.
2 . "Conceptos básicos", o "Regla con muchas excepciones", como la mayoría de las reglas.
3 . Inicialmente, en el calendario romano, febrero fue el último mes del año, por lo que hay lógica que es más corta que todos los demás. También hay lógica para agregar o eliminar el día al final del año, por lo que su longitud es una variable.

UPP. uno:
Traducción alternativa de la primera parte en



¿Te gustó el artículo? Compártelo