Para este desafío, debe implementar dos funciones, f y g , en los enteros, de modo que f ∘ g sea una función estrictamente decreciente, mientras que g ∘ f sea una función estrictamente creciente. En otras palabras, si toma dos enteros a <b , entonces f (g (a))> f (g (b)) y g (f (a)) <g (f (b)) . No existen restricciones para f y g individualmente, excepto que cada uno debe mapear un entero a otro entero.
Incluya una breve descripción de f y gy un argumento de por qué tienen la propiedad requerida.
Crédito: Este desafío fue inspirado por un problema en la competencia rumana de Maestría en Matemáticas de 2011 (que pregunta lo mismo pero sobre los números reales, en lugar de los enteros). Si realmente quieres spoilers, ahora sabes qué buscar.
Reglas
La palabra "función" en este desafío debe tomarse en el sentido matemático de mapear un número entero a otro: puede escribir dos programas o dos funciones y usar cualquiera de los métodos estándar para recibir entradas y proporcionar salidas, como de costumbre. Puede usar representaciones de cadenas de enteros en lugar de variables enteras reales, pero los tipos de entrada y salida deben ser idénticos, de modo que las funciones se puedan componer sin convertir manualmente los tipos intermedios. Recuerde que conceptualmente, f y g todavía deben ser funciones en ℤ, por lo que no puede hacer trampa usando dos representaciones de cadena diferentes del mismo número o algo así.
Recuerde que las funciones pueden no tener nombre , siempre que su nombre no sea necesario por sí mismo o por otra función que defina. Si nombra una o ambas funciones, puede suponer que existen en el mismo programa, para que puedan referirse entre sí en su implementación (por ejemplo,
def f(x): return -g(x)
en Python).Se aplican las reglas habituales de desbordamiento de enteros: su solución debe poder funcionar para enteros arbitrariamente grandes en una versión hipotética (o tal vez real) de su idioma en la que todos los enteros están ilimitados de forma predeterminada, pero si su programa falla en la práctica debido a la implementación no admite enteros tan grandes, eso no invalida la solución.
Puede usar cualquier lenguaje de programación , pero tenga en cuenta que estas lagunas están prohibidas de forma predeterminada.
Este es el código de golf , por lo que su puntaje es la suma del número de bytes de ambas funciones y gana la respuesta válida más corta.