Para esse desafio, você precisa implementar duas funções, f e g , nos números inteiros, de modo que f ∘ g seja uma função estritamente decrescente enquanto g ∘ f seja uma função estritamente crescente. Em outras palavras, se você pegar dois inteiros a <b , então f (g (a))> f (g (b)) e g (f (a)) <g (f (b)) . Não há restrições para f e g individualmente, exceto que cada um deve mapear um número inteiro para outro número inteiro.
Por favor, inclua uma breve descrição de f e g e um argumento para isso que eles têm a propriedade necessária.
Crédito: Esse desafio foi inspirado por um problema no concurso romeno de mestre de matemática de 2011 (que pergunta a mesma coisa, mas com números reais, em vez de números inteiros). Se você realmente quer spoilers, agora sabe o que procurar.
Regras
A palavra "função" neste desafio deve ser tomada no sentido matemático de mapear um número inteiro para outro: você pode escrever dois programas ou duas funções e usar qualquer um dos métodos padrão de recebimento de entrada e saída, como de costume. Você pode usar representações de seqüência de caracteres de números inteiros em vez de variáveis inteiras reais, mas os tipos de entrada e saída devem ser idênticos, para que as funções possam ser compostas sem a conversão manual de tipos entre eles. Lembre-se de que, conceitualmente, f e g ainda precisam ter funções em ℤ, então você não pode trapacear usando duas representações de cadeias diferentes do mesmo número ou algo assim.
Lembre-se de que as funções podem não ter nome , desde que o nome não seja necessário por si só ou por outra função que você definir. Se você nomear uma ou ambas as funções, poderá assumir que elas existem no mesmo programa, para que possam se referir uma à outra em sua implementação (por exemplo,
def f(x): return -g(x)
em Python).As regras usuais de estouro de números inteiros se aplicam: sua solução deve ser capaz de trabalhar com números inteiros arbitrariamente grandes em uma versão hipotética (ou talvez real) do seu idioma, na qual todos os números inteiros são ilimitados por padrão, mas se o seu programa falhar na prática devido à implementação não suporta números inteiros tão grandes, que não invalida a solução.
Você pode usar qualquer linguagem de programação , mas observe que essas brechas são proibidas por padrão.
Como código é golfe , sua pontuação é a soma do número de bytes de ambas as funções e a resposta mais curta válida.