Esse desafio foi inspirado em um blog de programação que eu frequento. Veja o post original aqui: Um quebra-cabeça de programação
Desafio
Defina uma função f:Q->Qtal que f(f(n)) = -npara todos os números diferentes de zero ne onde Qestá o conjunto de números racionais.
Detalhes
Em qualquer idioma que você preferir, defina uma função ou programa fque aceite como parâmetro um número ne retorne ou produza um número f(n).
A entrada pode ser fornecida por qualquer mecanismo que seja mais natural para o seu idioma: argumento de função, leitura de STDIN, argumento de linha de comando, posição da pilha, entrada de voz, sinais de gangue, etc.
A saída deve ser um valor de retorno de uma função / programa ou impresso em STDOUT.
Gostaria de restringir respostas a funções que não tiram vantagem do estado do programa ou da memória / dados globais visíveis de fora da função f. Por exemplo, manter um contador fora do fque conta quantas vezes ffoi chamado e apenas fazer uma negação com base nessa contagem não é muito desafiador ou interessante para ninguém. As decisões tomadas fdevem depender apenas de dados dentro fdo escopo lexical.
No entanto, essa restrição provavelmente é inadequada para alguns idiomas orientados a pilha ou outros tipos de idiomas que não distinguem esses tipos de dados ou escopos. Por favor, use seu melhor julgamento para manter o espírito desse desafio.
Pontuação
Aplicam-se regras comuns de golfe com código - sua pontuação é o número de bytes no seu código-fonte.
A resposta mínima requer que o domínio e o codomain fsejam um subconjunto dos racionais Q. Se você restringir seu domínio e seu código faos números inteiros Z, sua pontuação será o limite de 90% do número de bytes no seu código-fonte.
Tiebreak
Em caso de empate, o seguinte será usado na ordem:
- Menor número de símbolos que não sejam espaços em branco para impressão no código-fonte
- Data e hora do envio da resposta mais cedo
Editar
Você não é obrigado a suportar números de tamanho arbitrário. Por favor, interprete os conjuntos Ze Qcomo tipos de dados no idioma escolhido (geralmente inteiro e ponto flutuante, respectivamente).
Se sua solução depende inteiramente da estrutura subjacente ou padrão de bits de um tipo de dados, descreva suas limitações e como está sendo usada.
f:Q->Qsignifica?
fé uma função que mapeia membros de Q(números racionais) para outros membros (possivelmente o mesmo) de Q. veja en.wikipedia.org/wiki/Function_(mathematics)#Notation
