O objetivo deste desafio é escrever um programa que atenda às seguintes condições:
O programa não é palíndrico ou essencialmente palíndrico (o que significa que é possível remover caracteres para torná-lo um palíndromo sem alterar os efeitos do programa).
O programa não é uma involução (o que significa que ele não produz sua entrada original quando executado em sua saída)
O programa de polaridade reversa é o inverso do programa normal; portanto, quando o programa invertido é executado na saída do programa normal, ele retorna a entrada original.
O que significa polaridade reversa ? Bem, difere entre os idiomas.
- Para a maioria dos não-esolangs, isso significa reverter a ordem das sub-operações em uma única operação, reverter a ordem dos argumentos e reverter o conteúdo de listas / matrizes / matrizes / tuplas / dicionários / pilhas / filas / etc como reverter a ordem dos blocos de código e linhas independentes (mas não as linhas dentro dos blocos)
Exemplos:
Haskell :
x`mod`y
-> y`mod`x
; zipWith ((*3).(+)) [1,2,3] [4,5,6]
->zipWith ((+).(*3)) [6,5,4] [3,2,1]
Python : 2**3
-> 3**2
; for x,y in [(1,2),(3,4),(5,6)]
->for y,x in [(6,5),(4,3),(2,1)]
Para idiomas que possuem funções de 1 caractere (como Pyth, APL), basta inverter a sequência de instruções
Para esolangs unidimensionais como BF, inverta as instruções ou troque a polaridade; os swaps de polaridade são
[]
->{}
,+
->-
,-
->+
,>
-><
,<
->>
,.
->,
e,
->.
(mas não ambos)Para esolangs bidimensionais como o Befunge, você pode realizar uma reflexão nos eixos x ou y ou uma diagonal, girar 180 graus ou fazer uma combinação de reflexão e rotação
As operações comutativas são permitidas, mas as palindrômicas não: 2*x
são boas, mas x+x
são ruins. A definição de inversão de polaridade é bastante vaga, mas use seu julgamento quanto ao que faz sentido; o objetivo não é encontrar a brecha mais inteligente, mas encontrar a solução mais inteligente.
Este é um concurso de popularidade; portanto, uma brecha muito inteligente pode ser popular, mas tente manter o espírito desse desafio. O vencedor será anunciado assim que houver pelo menos 10 soluções com pelo menos 1 voto positivo e houver pelo menos uma solução com mais votos positivos do que os envios com pelo menos 1 voto positivo; ou em um mês, o que ocorrer primeiro. Este é o meu primeiro desafio, portanto, tente ser justo e me dê um feedback construtivo, mas também deixe-me saber se esse é um desafio irracional ou se é de alguma forma miscategorizado ou ambíguo. Se você tiver perguntas sobre um idioma que não se encaixa em nenhum dos pombos que estabeleci aqui, comente e me inclinarei à vontade da comunidade se houver um forte clamor por algum esclarecimento ou alteração de regra em particular.
ATUALIZAR
Faz exatamente 1 mês desde que o concurso foi iniciado (por acaso, eu o verifiquei por acaso, sem saber que estava na hora certa). Como este é um concurso de popularidade, o vencedor (por um deslizamento de terra) é Pietu1998-Befunge . Mesmo que os componentes inferiores (o inversor de texto e o alfabeto reverso) sejam involuções, o codificador / decodificador não é, portanto não há problema nisso. Pontos de bônus (em minha mente) por conseguir escrever "BEFUNGE" no meio. Pessoalmente, gostei da novidade da solução Theseus de Zgarb , porque o idioma parece legal (se restrito). Agradeço a todos pela participação e, embora o vencedor tenha sido escolhido, deixo este concurso completamente aberto e recebo inscrições futuras.
()
palindrômico? Tecnicamente, o inverso é )(
.