Flagrante rip-off de um rip-off . Voto a favor!
Sua tarefa, se você deseja aceitá-la, é escrever um programa / função que produz / retorna sua entrada / argumento inteiro. A parte complicada é que, se eu reverter seu código-fonte, a saída deve ser o número inteiro original negado.
Exemplos
Digamos que seu código fonte seja ABC
e sua entrada seja 4
. Se eu escrever CBA
e executá-lo, a saída deve ser -4
.
Digamos que seu código fonte seja ABC
e sua entrada seja -2
. Se eu escrever CBA
e executá-lo, a saída deve ser 2
.
Uma entrada de 0
pode dar 0
ou -0
, no entanto, se você suportar zero assinado, -0
deve dar 0
.
Respostas:
PowerShell ,
1814 bytesExperimente online! ! enilno ti yrT
Primeira das respostas triviais de abuso de comentários
fonte
J , 3 bytes
Experimente online!
-&0
é "argumento menos 0"0&-
é "0 argumento negativo"fonte
][-
etc.JavaScript, 11 bytes
Experimente Online! | Invertida
fonte
código de máquina x86, 3 bytes
Os bytes de código acima definem uma função que não é operacional: ele simplesmente retorna o controle para o chamador. Essa função é seguida por dois bytes de lixo que não serão executados, pois vêm após um retorno - eles estão na "terra de ninguém". Em mnemônicos montadores:
Ok, agora alguns trolls passam e invertem a ordem dos bytes:
Esses bytes agora definem uma função que recebe um argumento inteiro no
EAX
registro, o nega e retorna o controle para o chamador. Em mnemônicos montadores:Então ... isso foi simples. :-)
Note que podemos fazer a instrução "negação" ser qualquer coisa que queremos, uma vez que nunca é executado no "forward" orientação e apenas executado no "revertida" orientação. Portanto, podemos seguir o mesmo padrão para fazer coisas arbitrariamente mais complicadas. Por exemplo, aqui pegamos um argumento inteiro em um registro diferente (por exemplo,
EDI
para seguir a convenção de chamada do System V comumente usada em sistemas * nix), negá-lo e retorná-lo noEAX
registro convencional :↓ ↓
fonte
Geléia , 2 bytes
Experimente online! e seu reverso .
fonte
ḷN
, sem necessidade da lógica OR. : DNa
, palavras dãoaN
efeito estético :)Haskell , 8 bytes
Função de identidade anônima, transformando-se em subtração
0
quando invertida.Experimente online!
Invertida:
Experimente online!
fonte
Espaço em branco , 48 bytes
Letras
S
(espaço),T
(tabulação) eN
(nova linha) adicionadas apenas como destaque.Modificação menor da minha resposta de espaço em branco para inverter o código fonte, você nega a saída! desafio .
Experimente on-line ou on -line invertida (apenas com espaços brutos, guias e novas linhas).
Explicação:
Utilizando o Programa de Saída, é um palíndromo curto
NNN
.O programa regular irá:
O programa reverso irá:
Pequena explicação adicional de como pressionar um número:
S
: Ativar manipulação de pilhaS
: Empurre um número para a pilhaS
ouT
: positivo / negativo, respectivamenteS
/T
seguidos por um finalN
: número em binário, ondeS=0
eT=1
Ou seja,
SSTTSTSN
empurra-10
. Para o0
que não precisamos de um explícitoS=0
, tão simplesSSSN
ouSSTN
é suficiente.fonte
Perl 6 / Raku, 3 bytes
Experimente online!
Cria um bloco de código Whatever. Leia normalmente seu equivalente de bloco padrão é
-> \x {x - 0}
, mas ao contrário ele se torna-> \x {0 - x}
.fonte
C (clang) , 23 bytes
Experimente online!
fonte
Flak cerebral , 7 bytes
Experimente online!
Invertida:
Experimente online!
Nota: Funciona apenas em intérpretes que suportam comentários (por exemplo, funciona no Rain-Flak, mas não no BrainHack)
Se também trocarmos colchetes de abertura / fechamento em vez de apenas reverter os bytes, podemos fazer isso em 8 bytes sem usar comentários:
Experimente online!
Experimente invertido!
fonte
#
comentário inicia, então os parênteses na versão original são ignorados.Labirinto / Hexagonia , 6 bytes
Labirinto:
Experimente online! e seu reverso .
Hexagonia:
Experimente online! e seu reverso .
Quão?
fonte
Python 3 , 22 bytes
Experimente online!
Um lambda que implementa a função de identidade (ou negação)
fonte
MarioLANG , 22 bytes
Experimente online!
Ele apenas insere e gera o número antes de cair para o EOF
invertido:
Experimente online!
Ele faz um loop até que o valor de entrada seja 0 e o valor de saída seja -input, ele diz o número.
fonte
R , 23 bytes
Eu decidi tentar sem o truque para comentar.
frente
Experimente online!
Marcha ré
Experimente online!
Na versão direta,
+
está atuando como um operador binário e-
é um operador unário.No reverso,
+
torna - se unário e-
é binário. Portanto, a função scan aceita os argumentos: ofile=""
que significa stdin ewhat=0
, que também são padrões. Portanto, quando o+
é unário, o primeiro argumento está à direita, quando é binário, o primeiro argumento está à esquerda.o
parte do código não faz nada realmente útil, portanto, em certo sentido, meu código não é realmente muito mais válido do que usar o truque de comentário.
fonte
+
redefinidos para serem usados como unários e binários. Levei um minuto para entender como isso foi analisado ... Nenhum outro nome de operador teria feito o trabalho.Haskell, 12 bytes
Experimente online! Marcha ré:
Experimente online!
Não é tão curto quanto a resposta de Ørjan Johansen , mas sem comentários.
fonte
Perl 5 (
-p
),76 bytes-1 graças a @primo
TIO
Um comentário não altera a entrada
Negar a entrada
TIO
fonte
$_*=$#
TIO . Observe que#
deve ser o último byte do programa, caso contrário, será interpretado como a variável$#
, e não o último índice da matriz com o nome <vazio>.$#
dá tanto um erro (se # não é o último caractere) ou nada-p
ou-n
. Eu suspeito que o clichê tenha algo a ver com isso ...-p/-n
adiciona um;
após o código. O que significa que$#
é realmente$#;
: o tamanho da matriz@;
. Se o tamanho das@;
alterações for alterado, o resultado não está mais correto ( TIO ). Enfim, isso é super inteligente, muito bem! :)perl -MO=Deparse -p <(echo -n '$_*=$#')
, porque pareceperl -MO=Deparse -pe '$_*=$#'
acrescentar uma nova linhaGaia , 2 bytes
Experimente online!
Invertida:
fonte
Backhand ,
65 bytesExperimente online! Experimente dobrou!
Tornou um pouco complexo devido à natureza do ponteiro no Backhand.
Eu não acho que é possível ficar mais curtohaha, acontece que eu estava errado. Isso não duplica nenhuma instrução e reutiliza os comandos de entrada, saída e finalização entre os dois programas. Agora eu acho que é ótimo, já que você precisa de todos osIO-@
comandos para funcionar, e em um programa de 4 bytes você pode executar apenas dois desses comandos.Explicação:
O ponteiro no Backhand move-se para três células um carrapato e ricocheteia nos limites da célula, o que significa que a lógica geral está sobreposta. No entanto, você pode manipular essa velocidade com os comandos
v
e^
.O programa original executa as instruções
IO-@
, que são inseridas como número, produzidas como número, subtraem e terminam. Obviamente, a subtração é supérflua. No código, são eles:O programa revertido é executado
v-I-vO-@
. Av
reduz as etapas de ponteiro entre as carraças e os-
substratos a partir do fundo da pilha, que é implicitamente zero. Os-
comandos extras não fazem nada. O programa executa comofonte
Wolfram Language (Mathematica) , 9 bytes
Experimente online!
Encaminhar: ler
((1)&*0+#-0)&*1
=#&
Para trás: read
((1)&*0-#+0)&*1
=-#&
fonte
R , 14 bytes
Experimente online!
Um programa completo que lê um número ou lê e nega um número. A funcionalidade reversa é protegida por um comentário embutido
fonte
Python 3 ,
2214 bytesExperimente online!
Usa o
int
construtor da classe e um método pseudo-privado interno.fonte
0.
seria interpretado como um número, que é seguido por um símbolo05AB1E , 2 bytes
Experimente online!
Invertida
fonte
Befunge-98 (FBBI) , 6 bytes
Experimente online! Experimente invertido!
fonte
APL (Dyalog Unicode) ,
133 bytesExperimente online!
Resposta trivial. Retorna
arg
ou¯arg
.Economizou 10 bytes por não ser burro (obrigado Adám).
Alterou o 3-byter resultante para uma função mais adequada.
fonte
Linguagem de Máquina de Turing , 39 bytes
O positivo
O negativo
Este foi um pouco mais complicado do que eu pensava, principalmente porque eu tinha que superar meus preconceitos de ter código que é executado com erros de 'compilação'.
fonte
> <> ,
54 bytesusa a inicialização da pilha com a
-v
opção, coloque sua variável de entrada lá.Experimente online!
Ou tente a reversão
Explicação
fonte
Stack Cats
-mn
, 2 bytesExperimente online!
Tente o contrário!
Explicação
Acontece que isso é realmente muito mais fácil do que o desafio anterior no Stack Cats. O programa completo (após a inscrição
-m
) aqui é-X-
.X
é usado para trocar as pilhas esquerda e direita da cabeça da fita, ou seja, não afeta a pilha inicial, portanto podemos ignorá-la. Mas então o programa é efetivamente justo--
(negue o topo da pilha duas vezes), o que não faz nada.Para o programa inverso, a aplicação do
-m
giveX-X
. Mais uma vez,X
não faz nada, então o programa é efetivamente justo-
, o que nega o topo da pilha.A única outra solução de 2 bytes é
-=
, mas é praticamente a mesma. A única diferença é que=
troca apenas as partes superiores das pilhas adjacentes, não as pilhas inteiras.Mas, novamente, o uso
-m
parece um pouco como trapaça, então abaixo está uma solução que usa um programa totalmente espelhado.Stack Cats
-n
, 7 bytesExperimente online!
Tente o contrário!
Explicação
As considerações da resposta anterior ainda se aplicam : qualquer solução válida precisa usar os caracteres emparelhados e
I
. As seis soluções possíveis (incluídas no link do TIO) são praticamente as mesmas.-
e_
são equivalentes neste programa e:
podem ser substituídos por|
ouT
(que fazem o mesmo para entradas diferentes de zero e coincidentemente também funcionam para entradas zero). Eu escolhi este para explicar porque é mais fácil.Portanto, lembre-se de que a pilha inicial mantém a entrada em cima de um
-1
(em cima de infinitos zeros), enquanto todas as outras pilhas ao longo da fita mantêm apenas zeros. O Stack Cats também possui a propriedade de que qualquer programa de tamanho par não faz nada (desde que seja encerrado, mas não podemos usar loops para esse desafio). O mesmo é obviamente verdadeiro para qualquer programa de tamanho ímpar, cujo caractere central não faça nada ... vamos ver:Portanto, a segunda metade do programa desfaz exatamente a primeira metade e terminamos com a entrada em cima de uma
-1
novamente.O programa inverso é
:I>-<I:
. Vamos ver como isso muda as coisas:fonte
Lote, 34 bytes
Repete (
ECHO.
) a entrada (%1
). O restante da primeira linha redireciona tecnicamenteSTDERR
para um arquivo chamadoMER@
, mas isso não causa impacto.A segunda linha está comentada (
REM...
).Invertida
Usa o modo aritmético do comando set (
SET /a
) para subtrair (-=
) a entrada (%1
) de uma variável indefinida (a
) que é equivalente a0 - input
. Novamente, o restante da primeira linha redireciona tecnicamenteSTDERR
para um arquivo chamadoMER@
, mas isso não causa impacto.A segunda linha está comentada (
REM...
).fonte
Braquilog , 2 bytes
O Brachylog insere implicitamente da esquerda e sai da direita.
&
ignora qualquer coisa à esquerda e passa a entrada para a função à direita.ṅ
restringe cada lado a ser versões negadas uma da outra.Experimente online
fonte
Triangular ,
87 bytesExperimente online!
Ungolfed:
Invertida:
Experimente online!
Versão anterior (8 bytes):
fonte