Escreva dois programas para que, quando os bytes de seu código-fonte estiverem XOR-d juntos, produza um terceiro programa válido, tudo no mesmo idioma. O comprimento de cada um dos três programas em bytes deve ser idêntico.
O primeiro programa deve sair A
. O segundo programa deve sair B
. O terceiro programa deve sair C
.
Uma nova linha é opcional, mas se uma gera uma nova linha, as outras devem também.
Se você usar qualquer sinalizador de linha de comando, deverá usar os mesmos para cada programa, ou seja, todos os três programas deverão ser executados da mesma maneira. Se você estiver usando uma linguagem como PHP que tradicionalmente começa com a mesma combinação de caracteres, por exemplo, <?
mas existe uma opção de linha de comando que elimina esses caracteres que você pode usar, ou seja, o PHP deve ser executado apenas a partir da linha de comando.
Nenhuma entrada é permitida. Cada programa deve ser independente.
Se o seu programa estiver totalmente escrito em ASCII, as tabelas a seguir podem ajudar:
Codes 0x20 - 0x3F
!"#$%&'()*+,-./
0123456789:;<=>?
Codes 0x40 - 0x5F
@ABCDEFGHIJKLMNO
PQRSTUVWXYZ[\]^_
Codes 0x60 - 0x7E
`abcdefghijklmno
pqrstuvwxyz{|}~
EDITAR
O uso de caracteres não imprimíveis é permitido, pois eu não o proibi expressamente originalmente. No entanto, se você quiser publicar uma versão que use apenas caracteres imprimíveis, seria ótimo! (A pontuação é a mais curta.) O "fator inteligente" do uso de códigos de controle está um pouco desgastado agora ...
EDIT FIM
XOR ao inserir dois códigos do mesmo bloco produzirá um código menor que 0x20 que, portanto, não é um código ASCII imprimível válido, por exemplo, 0x41 ( A
) XOR 0x5A ( Z
) = 0x1B. O XOR com dois códigos de blocos diferentes produzirá um código do terceiro bloco, por exemplo, 0x61 ( a
) XOR 0x54 ( T
) = 0x35 ( 5
).
| @` !Aa "Bb #Cc $Dd %Ee &Ff 'Gg (Hh )Ii *Jj +Kk ,Ll -Mm .Nn /Oo 0Pp 1Qq 2Rr 3Ss 4Tt 5Uu 6Vv 7Ww 8Xx 9Yy :Zz ;[{ <\| =]} >^~ ?_
--- + --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
@` | @` !Aa "Bb #Cc $Dd %Ee &Ff 'Gg (Hh )Ii *Jj +Kk ,Ll -Mm .Nn /Oo 0Pp 1Qq 2Rr 3Ss 4Tt 5Uu 6Vv 7Ww 8Xx 9Yy :Zz ;[{ <\| =]} >^~ ?_
!Aa | !Aa @` #Cc "Bb %Ee $Dd 'Gg &Ff )Ii (Hh +Kk *Jj -Mm ,Ll /Oo .Nn 1Qq 0Pp 3Ss 2Rr 5Uu 4Tt 7Ww 6Vv 9Yy 8Xx ;[{ :Zz =]} <\| ?_ >^~
"Bb | "Bb #Cc @` !Aa &Ff 'Gg $Dd %Ee *Jj +Kk (Hh )Ii .Nn /Oo ,Ll -Mm 2Rr 3Ss 0Pp 1Qq 6Vv 7Ww 4Tt 5Uu :Zz ;[{ 8Xx 9Yy >^~ ?_ <\| =]}
#Cc | #Cc "Bb !Aa @` 'Gg &Ff %Ee $Dd +Kk *Jj )Ii (Hh /Oo .Nn -Mm ,Ll 3Ss 2Rr 1Qq 0Pp 7Ww 6Vv 5Uu 4Tt ;[{ :Zz 9Yy 8Xx ?_ >^~ =]} <\|
$Dd | $Dd %Ee &Ff 'Gg @` !Aa "Bb #Cc ,Ll -Mm .Nn /Oo (Hh )Ii *Jj +Kk 4Tt 5Uu 6Vv 7Ww 0Pp 1Qq 2Rr 3Ss <\| =]} >^~ ?_ 8Xx 9Yy :Zz ;[{
%Ee | %Ee $Dd 'Gg &Ff !Aa @` #Cc "Bb -Mm ,Ll /Oo .Nn )Ii (Hh +Kk *Jj 5Uu 4Tt 7Ww 6Vv 1Qq 0Pp 3Ss 2Rr =]} <\| ?_ >^~ 9Yy 8Xx ;[{ :Zz
&Ff | &Ff 'Gg $Dd %Ee "Bb #Cc @` !Aa .Nn /Oo ,Ll -Mm *Jj +Kk (Hh )Ii 6Vv 7Ww 4Tt 5Uu 2Rr 3Ss 0Pp 1Qq >^~ ?_ <\| =]} :Zz ;[{ 8Xx 9Yy
'Gg | 'Gg &Ff %Ee $Dd #Cc "Bb !Aa @` /Oo .Nn -Mm ,Ll +Kk *Jj )Ii (Hh 7Ww 6Vv 5Uu 4Tt 3Ss 2Rr 1Qq 0Pp ?_ >^~ =]} <\| ;[{ :Zz 9Yy 8Xx
(Hh | (Hh )Ii *Jj +Kk ,Ll -Mm .Nn /Oo @` !Aa "Bb #Cc $Dd %Ee &Ff 'Gg 8Xx 9Yy :Zz ;[{ <\| =]} >^~ ?_ 0Pp 1Qq 2Rr 3Ss 4Tt 5Uu 6Vv 7Ww
)Ii | )Ii (Hh +Kk *Jj -Mm ,Ll /Oo .Nn !Aa @` #Cc "Bb %Ee $Dd 'Gg &Ff 9Yy 8Xx ;[{ :Zz =]} <\| ?_ >^~ 1Qq 0Pp 3Ss 2Rr 5Uu 4Tt 7Ww 6Vv
*Jj | *Jj +Kk (Hh )Ii .Nn /Oo ,Ll -Mm "Bb #Cc @` !Aa &Ff 'Gg $Dd %Ee :Zz ;[{ 8Xx 9Yy >^~ ?_ <\| =]} 2Rr 3Ss 0Pp 1Qq 6Vv 7Ww 4Tt 5Uu
+Kk | +Kk *Jj )Ii (Hh /Oo .Nn -Mm ,Ll #Cc "Bb !Aa @` 'Gg &Ff %Ee $Dd ;[{ :Zz 9Yy 8Xx ?_ >^~ =]} <\| 3Ss 2Rr 1Qq 0Pp 7Ww 6Vv 5Uu 4Tt
,Ll | ,Ll -Mm .Nn /Oo (Hh )Ii *Jj +Kk $Dd %Ee &Ff 'Gg @` !Aa "Bb #Cc <\| =]} >^~ ?_ 8Xx 9Yy :Zz ;[{ 4Tt 5Uu 6Vv 7Ww 0Pp 1Qq 2Rr 3Ss
-Mm | -Mm ,Ll /Oo .Nn )Ii (Hh +Kk *Jj %Ee $Dd 'Gg &Ff !Aa @` #Cc "Bb =]} <\| ?_ >^~ 9Yy 8Xx ;[{ :Zz 5Uu 4Tt 7Ww 6Vv 1Qq 0Pp 3Ss 2Rr
.Nn | .Nn /Oo ,Ll -Mm *Jj +Kk (Hh )Ii &Ff 'Gg $Dd %Ee "Bb #Cc @` !Aa >^~ ?_ <\| =]} :Zz ;[{ 8Xx 9Yy 6Vv 7Ww 4Tt 5Uu 2Rr 3Ss 0Pp 1Qq
/Oo | /Oo .Nn -Mm ,Ll +Kk *Jj )Ii (Hh 'Gg &Ff %Ee $Dd #Cc "Bb !Aa @` ?_ >^~ =]} <\| ;[{ :Zz 9Yy 8Xx 7Ww 6Vv 5Uu 4Tt 3Ss 2Rr 1Qq 0Pp
0Pp | 0Pp 1Qq 2Rr 3Ss 4Tt 5Uu 6Vv 7Ww 8Xx 9Yy :Zz ;[{ <\| =]} >^~ ?_ @` !Aa "Bb #Cc $Dd %Ee &Ff 'Gg (Hh )Ii *Jj +Kk ,Ll -Mm .Nn /Oo
1Qq | 1Qq 0Pp 3Ss 2Rr 5Uu 4Tt 7Ww 6Vv 9Yy 8Xx ;[{ :Zz =]} <\| ?_ >^~ !Aa @` #Cc "Bb %Ee $Dd 'Gg &Ff )Ii (Hh +Kk *Jj -Mm ,Ll /Oo .Nn
2Rr | 2Rr 3Ss 0Pp 1Qq 6Vv 7Ww 4Tt 5Uu :Zz ;[{ 8Xx 9Yy >^~ ?_ <\| =]} "Bb #Cc @` !Aa &Ff 'Gg $Dd %Ee *Jj +Kk (Hh )Ii .Nn /Oo ,Ll -Mm
3Ss | 3Ss 2Rr 1Qq 0Pp 7Ww 6Vv 5Uu 4Tt ;[{ :Zz 9Yy 8Xx ?_ >^~ =]} <\| #Cc "Bb !Aa @` 'Gg &Ff %Ee $Dd +Kk *Jj )Ii (Hh /Oo .Nn -Mm ,Ll
4Tt | 4Tt 5Uu 6Vv 7Ww 0Pp 1Qq 2Rr 3Ss <\| =]} >^~ ?_ 8Xx 9Yy :Zz ;[{ $Dd %Ee &Ff 'Gg @` !Aa "Bb #Cc ,Ll -Mm .Nn /Oo (Hh )Ii *Jj +Kk
5Uu | 5Uu 4Tt 7Ww 6Vv 1Qq 0Pp 3Ss 2Rr =]} <\| ?_ >^~ 9Yy 8Xx ;[{ :Zz %Ee $Dd 'Gg &Ff !Aa @` #Cc "Bb -Mm ,Ll /Oo .Nn )Ii (Hh +Kk *Jj
6Vv | 6Vv 7Ww 4Tt 5Uu 2Rr 3Ss 0Pp 1Qq >^~ ?_ <\| =]} :Zz ;[{ 8Xx 9Yy &Ff 'Gg $Dd %Ee "Bb #Cc @` !Aa .Nn /Oo ,Ll -Mm *Jj +Kk (Hh )Ii
7Ww | 7Ww 6Vv 5Uu 4Tt 3Ss 2Rr 1Qq 0Pp ?_ >^~ =]} <\| ;[{ :Zz 9Yy 8Xx 'Gg &Ff %Ee $Dd #Cc "Bb !Aa @` /Oo .Nn -Mm ,Ll +Kk *Jj )Ii (Hh
8Xx | 8Xx 9Yy :Zz ;[{ <\| =]} >^~ ?_ 0Pp 1Qq 2Rr 3Ss 4Tt 5Uu 6Vv 7Ww (Hh )Ii *Jj +Kk ,Ll -Mm .Nn /Oo @` !Aa "Bb #Cc $Dd %Ee &Ff 'Gg
9Yy | 9Yy 8Xx ;[{ :Zz =]} <\| ?_ >^~ 1Qq 0Pp 3Ss 2Rr 5Uu 4Tt 7Ww 6Vv )Ii (Hh +Kk *Jj -Mm ,Ll /Oo .Nn !Aa @` #Cc "Bb %Ee $Dd 'Gg &Ff
:Zz | :Zz ;[{ 8Xx 9Yy >^~ ?_ <\| =]} 2Rr 3Ss 0Pp 1Qq 6Vv 7Ww 4Tt 5Uu *Jj +Kk (Hh )Ii .Nn /Oo ,Ll -Mm "Bb #Cc @` !Aa &Ff 'Gg $Dd %Ee
;[{ | ;[{ :Zz 9Yy 8Xx ?_ >^~ =]} <\| 3Ss 2Rr 1Qq 0Pp 7Ww 6Vv 5Uu 4Tt +Kk *Jj )Ii (Hh /Oo .Nn -Mm ,Ll #Cc "Bb !Aa @` 'Gg &Ff %Ee $Dd
<\| | <\| =]} >^~ ?_ 8Xx 9Yy :Zz ;[{ 4Tt 5Uu 6Vv 7Ww 0Pp 1Qq 2Rr 3Ss ,Ll -Mm .Nn /Oo (Hh )Ii *Jj +Kk $Dd %Ee &Ff 'Gg @` !Aa "Bb #Cc
=]} | =]} <\| ?_ >^~ 9Yy 8Xx ;[{ :Zz 5Uu 4Tt 7Ww 6Vv 1Qq 0Pp 3Ss 2Rr -Mm ,Ll /Oo .Nn )Ii (Hh +Kk *Jj %Ee $Dd 'Gg &Ff !Aa @` #Cc "Bb
>^~ | >^~ ?_ <\| =]} :Zz ;[{ 8Xx 9Yy 6Vv 7Ww 4Tt 5Uu 2Rr 3Ss 0Pp 1Qq .Nn /Oo ,Ll -Mm *Jj +Kk (Hh )Ii &Ff 'Gg $Dd %Ee "Bb #Cc @` !Aa
?_ | ?_ >^~ =]} <\| ;[{ :Zz 9Yy 8Xx 7Ww 6Vv 5Uu 4Tt 3Ss 2Rr 1Qq 0Pp /Oo .Nn -Mm ,Ll +Kk *Jj )Ii (Hh 'Gg &Ff %Ee $Dd #Cc "Bb !Aa @`
Procure dois caracteres de colunas diferentes e escolha o caractere na interseção que está na outra coluna, por exemplo, B
e e
: "Bb
XOR %Ee
é 'Gg
. B
é segunda coluna e e
é a terceira coluna de modo a escolher o carácter da primeira coluna no 'Gg
: '
.
Fonte de exemplo:
Ld+|?dpHs'-,pUe (Program 1)
~bWn=n5Xe!t_G($3 (Program 2)
^.3EAQQ(-RSrkXqV (Program 3)
Observe que em cada coluna pode haver apenas um dígito, uma letra maiúscula e uma letra minúscula. Para cada coluna, você pode usar qualquer caractere que desejar no primeiro programa e escolher 64 caracteres no segundo programa, mas apenas um caractere possível no terceiro programa. 0x7F não é válido em nenhum lugar.
Se você usa Unicode, depende de você validar o XOR-ing e deve dizer como ele é codificado, por exemplo, UTF-8, UTF-16, etc. Cada arquivo deve usar a mesma codificação.
Pontuação: duração de um programa. Menos bytes ganham!
fonte
PHP, 15 + 1 bytes
Este foi
fácilREALMENTE mais difícil do que o esperado, mas divertido!Infelizmente, esta é a terceira reescrita devido a respostas inválidas.
Desta vez, ele deve ser executado no console (usando o parâmetro
-r
).Programa A:
Programa B:
Resultado do XORing:
Despejo hexagonal:
O PHP lançará avisos sobre ter os caracteres
\0
e\3
antes do eco, mas isso é ignorável.São apenas avisos!
Ainda funciona e gera a resposta certa!
Tente executar isso no seu console:
Se não puder, tente um destes:
Se você ainda não pode, execute o código você mesmo:
Código antigo, inválido:
Programa A:
Programa B:
Resultado do XORing:
fonte
\x00
no meu console, mas substituí-los por\x03
obras e\x00
dentro do próprio PHP no meu servidor ainda é executado, então estou assumindo que sua resposta é válida agora! Eu também tive que usar um sinalizador para suprimir todos os erros:php -d error_reporting=0 -r "^C^C^C^C^C^CeCHO C;^C"
SaídasC
. Redirecionar o stderr (2>
no Windows) não suprimiu todos os erros da saída.\3
disso, que aparece como o clube dos corações. Mas você quer que eu adicione a-d
bandeira à contagem?\x03
coração! Windows ♥ PHP!@
conseguiu suprimir todos os erros!Pip, 4 bytes
Como o user23013 está usando ASCII que não imprime no GolfScript, achei que poderia fazer o mesmo no Pip . Requer redirecionamento
stderr
, mas tudo bem , certo?UMA
onde os dois
?
s representam o caractere ASCII 0.B
C
onde os dois
?
s representam caracteres ASCII 0 e 3, respectivamente.Coloque cada programa em um arquivo (
A.pip
por exemplo). No Linux, faça:No Windows:
Se a saída de erro for verbal, aqui está uma solução de 5 bytes em ASCII imprimível:
fonte
Microscript , 8 bytes cada
UMA:
'APhgap)
B:
'BPh@" A
C:
<0><3><0><0>'CPh
fonte
<0><3><0><0>...
?Python,
191514 bytesa.py
b.py
c.py
Eu vim com essa solução quando notei que o python (2.7.6 no Ubuntu 14.04) depois de ver um caractere NUL ignorará o restante dessa linha.
Encurtado em 1 bytes quando percebi que o espaço após a impressão não era necessário. E encurtado em mais 4 bytes quando percebi que o caractere NUL também fazia com que a nova linha fosse ignorada, para que eu pudesse usá-lo para quebrar linhas no meio de uma palavra-chave.
fonte
Chip , 8 bytes
Todos exigem a bandeira
-w
.Programa A
(
.
é o caractere nulo\x00
)Programa B
(
.
é o caractere nulo\x00
)Programa C
Ambos A e B produzem três avisos cada (por exemplo:
1:6 WARN: '' (0) is not a valid character
:), mas eles podem ser ignorados com segurança desde que eles sigam para o stderr. Os elementos^
eM
são válidos, mas não fazem nada aqui.Tenho certeza de que isso é o melhor que pode ser feito com os não-imprimíveis permitidos. Não tenho certeza se esta prova está completa, mas aqui vai:
Um requer
a
,g
,t
, e de alguma forma para ativar esses elementos (são necessários um mínimo de dois símbolos para isso, e*
é a opção mais simples aqui). Do mesmo modo,B requer
b
,g
,t
, e dois*
s, eC requer
a
,b
,g
,t
, e dois*
s.Se C emprestar seus símbolos diretamente de A e B, haverá duas letras e dois
*
s que não serão reclamados. (Na minha implementação, At
e Bg
). Esses quatro elementos podem ser sobrepostos para que sejam mutilados em C (produzindo^
eM
, neste caso). Agora temos esses dois elementos mutilados, mais os seis elementos necessários acima (C requer 6, os outros apenas 5, mas precisamos de max () aqui), para um total de 8 elementos.Lasca (sem aviso), 10 bytes
Todos exigem as bandeiras
-wo
.Programa A
(existe um espaço à direita)
Programa B
Programa C
Provavelmente, é o melhor que podemos fazer no ASCII imprimível, da seguinte forma: Os três programas, combinados, precisam de um total de 2
a
s, 2b
s, 3g
s e 3t
s. Como nenhum desses personagens pode passar para outro, precisamos de2+2+3+3 = 10
posições separadas.fonte