Escriba dos programas de manera que cuando los bytes de su código fuente sean XOR-d juntos, produzca un tercer programa válido, todos en el mismo idioma. La longitud de cada uno de los tres programas en bytes debe ser idéntica.
El primer programa debería salir A
. El segundo programa debería salir B
. El tercer programa debería salir C
.
Una nueva línea es opcional, pero si una genera una nueva línea, las otras dos también deben hacerlo.
Si utiliza cualquier indicador de línea de comando, debe usar los mismos para cada programa, es decir, los tres programas deben ejecutarse de la misma manera. Si está utilizando un lenguaje como PHP que tradicionalmente comienza con la misma combinación de caracteres, por ejemplo, <?
pero hay una opción de línea de comando que elimina esos caracteres que puede usar en su lugar, es decir, PHP solo debe ejecutarse desde la línea de comando.
No se permite ninguna entrada. Cada programa debe ser autónomo.
Si su programa está escrito completamente en ASCII, las siguientes tablas pueden ayudar:
Codes 0x20 - 0x3F
!"#$%&'()*+,-./
0123456789:;<=>?
Codes 0x40 - 0x5F
@ABCDEFGHIJKLMNO
PQRSTUVWXYZ[\]^_
Codes 0x60 - 0x7E
`abcdefghijklmno
pqrstuvwxyz{|}~
EDITAR
Se permite el uso de caracteres que no se imprimen, ya que originalmente no lo prohibí expresamente. Sin embargo, si desea publicar una versión que también use solo caracteres imprimibles, ¡sería genial! (Marque el que sea más corto). El "factor inteligente" de usar códigos de control ha desaparecido un poco ahora ...
EDICIÓN FINAL
Hacer XOR de dos códigos del mismo bloque producirá un código menor que 0x20 que, por lo tanto, no es un código ASCII imprimible válido, por ejemplo, 0x41 ( A
) XOR 0x5A ( Z
) = 0x1B. Hacer XOR de cualquiera de los dos códigos de diferentes bloques producirá un código del tercer bloque, por ejemplo, 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 @`
Busque dos personajes de diferentes columnas y elija el personaje de su intersección que está en la otra columna, por ejemplo, B
y e
: "Bb
XOR %Ee
es 'Gg
. B
Es la segunda columna y e
es la tercera columna para recoger el carácter de la primera columna en 'Gg
: '
.
Fuente de ejemplo:
Ld+|?dpHs'-,pUe (Program 1)
~bWn=n5Xe!t_G($3 (Program 2)
^.3EAQQ(-RSrkXqV (Program 3)
Tenga en cuenta que en cada columna solo puede haber un dígito, una letra mayúscula y una letra minúscula. Para cada columna, puede usar cualquier carácter que desee en el primer programa, luego puede elegir entre 64 caracteres en el segundo programa pero solo un carácter posible en el tercer programa. 0x7F no es válido en ningún lugar.
Si usa Unicode, depende de usted validar el XOR-ing y debe decir cómo está codificado, por ejemplo, UTF-8, UTF-16, etc. Cada archivo debe usar la misma codificación.
Puntuación: Duración de un programa. ¡Pocos bytes ganan!
fuente
PHP, 15 + 1 bytes
Este era
fácilREALMENTE más difícil de lo esperado, ¡pero divertido!Lamentablemente, esta es la tercera reescritura debido a respuestas no válidas.
Esta vez, está destinado a ejecutarse en la consola (utilizando el parámetro
-r
).Programa A
Programa B:
Resultado de XORing:
Volcado hexadecimal:
PHP lanzará advertencias sobre tener los caracteres
\0
y\3
antes del eco, pero eso es ignorable.¡Son solo advertencias!
¡Todavía se ejecuta y genera la respuesta correcta!
Intenta ejecutar esto en tu consola:
Si no puede, pruebe uno de estos:
Si aún no puede, ejecute el código usted mismo:
Código antiguo, inválido:
Programa A
Programa B:
Resultado de XORing:
fuente
\x00
en mi consola, pero reemplazarlos con\x03
trabajos y\x00
dentro de PHP en mi servidor aún se ejecuta, ¡así que supongo que su respuesta es válida ahora! También tuve que usar una bandera para suprimir todos los errores:php -d error_reporting=0 -r "^C^C^C^C^C^CeCHO C;^C"
SalidasC
. Redirigir stderr (2>
en Windows) no eliminó todos los errores de la salida.\3
eso, que se muestra como el club de los corazones. ¿Pero quieres que agregue la-d
bandera al conteo?\x03
corazón en un corazón! Windows ♥ PHP!@
arregló para suprimir todos los errores!Pip, 4 bytes
Como user23013 está utilizando ASCII sin impresión en GolfScript, pensé que podría hacer lo mismo en Pip . Requiere redirigir
stderr
, pero está bien , ¿ verdad?UNA
donde los dos
?
s representan el carácter ASCII 0.si
do
donde los dos
?
s representan caracteres ASCII 0 y 3, respectivamente.Coloque cada programa en un archivo (
A.pip
por ejemplo). En Linux, haz:En Windows:
Si la salida de error es verboten, aquí hay una solución de 5 bytes en ASCII imprimible:
fuente
Microscript , 8 bytes cada uno
UNA:
'APhgap)
SI:
'BPh@" A
DO:
<0><3><0><0>'CPh
fuente
<0><3><0><0>...
?Pitón,
191514 bytesa.py
b.py
c.py
Se me ocurrió esta solución cuando noté que python (2.7.6 en Ubuntu 14.04) después de ver un carácter NUL ignorará el resto de esa línea.
Acortado por 1 bytes una vez que me di cuenta de que el espacio después de la impresión no era necesario. Y acortado por 4 bytes más una vez que me di cuenta de que el carácter NUL también hace que se ignore la nueva línea para que pueda usarla para romper líneas en el medio de una palabra clave.
fuente
Chip de 8 bytes
Todos requieren la bandera
-w
.Programa A
(
.
es el carácter nulo\x00
)Programa B
(
.
es el carácter nulo\x00
)Programa C
Tanto A como B producen tres advertencias cada una (por ejemplo:)
1:6 WARN: '' (0) is not a valid character
, pero se pueden ignorar con seguridad ya que van a stderr. Los elementos^
yM
son válidos, pero no hacen nada aquí.Estoy bastante seguro de que esto es lo mejor que se puede hacer con no imprimibles permitidos. No estoy seguro de que esta prueba esté completa, pero aquí va:
A requiere
a
,g
,t
, y de alguna manera para activar los elementos (un mínimo de dos símbolos son necesarios para esto, y*
es la opción más simple aquí). Del mismo modo,B requiere
b
,g
,t
, y dos*
s, yC requiere
a
,b
,g
,t
, y dos*
s.Si C toma prestados sus símbolos directamente de A y B, habrá dos letras y dos
*
s que permanecerán sin reclamar. (En mi implementación, At
y Bg
). Esos cuatro elementos pueden superponerse para que se destrocen en C (produciendo^
yM
en este caso). Ahora tenemos esos dos elementos destrozados, más los seis elementos requeridos desde arriba (C requiere 6, los otros solo 5, pero necesitamos max () aquí), para un total de 8 elementos.Chip (sin advertencia), 10 bytes
Todos requieren las banderas
-wo
.Programa A
(hay un espacio final)
Programa B
Programa C
Probablemente sea lo mejor que podemos hacer con ASCII imprimible, de la siguiente manera: los tres programas, combinados, necesitan un total de 2
a
s, 2b
s, 3g
sy 3t
s. Como ninguno de estos personajes puede pasar a otro, necesitamos2+2+3+3 = 10
posiciones separadas.fuente