Écrivez deux programmes de telle sorte que lorsque les octets de leur code source sont XOR-d ensemble, il produit un troisième programme valide, tous dans la même langue. La longueur de chacun des trois programmes en octets doit être identique.
Le premier programme devrait sortir A
. Le deuxième programme devrait sortir B
. Le troisième programme devrait sortir C
.
Une nouvelle ligne est facultative, mais si l'une sort une nouvelle ligne, les deux autres le doivent aussi.
Si vous utilisez des drapeaux de ligne de commande, vous devez être les mêmes pour chaque programme, c'est-à-dire que les trois programmes doivent être exécutés de la même manière. Si vous utilisez un langage comme PHP qui commence traditionnellement avec la même combinaison de caractères, par exemple, <?
mais qu'il existe une option de ligne de commande qui supprime ces caractères, vous pouvez l'utiliser à la place, c'est-à-dire que PHP ne doit être exécuté qu'à partir de la ligne de commande.
Aucune entrée n'est autorisée. Chaque programme doit être autonome.
Si votre programme est entièrement écrit en ASCII, les tableaux suivants peuvent vous aider:
Codes 0x20 - 0x3F
!"#$%&'()*+,-./
0123456789:;<=>?
Codes 0x40 - 0x5F
@ABCDEFGHIJKLMNO
PQRSTUVWXYZ[\]^_
Codes 0x60 - 0x7E
`abcdefghijklmno
pqrstuvwxyz{|}~
MODIFIER
L'utilisation de caractères non imprimables est autorisée car je ne l'ai pas expressément interdit à l'origine. Cependant, si vous souhaitez publier une version qui n'utilise que des caractères imprimables, ce serait bien! (Le score est le plus court.) Le "facteur intelligent" de l'utilisation des codes de contrôle s'est quelque peu dissipé maintenant ...
FIN DE LA MODIFICATION
XOR-ing deux codes à partir du même bloc produira un code inférieur à 0x20 qui n'est donc pas un code ASCII imprimable valide, par exemple 0x41 ( A
) XOR 0x5A ( Z
) = 0x1B. XOR-ing deux codes de blocs différents produira un code à partir du troisième bloc, par exemple 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 @`
Recherchez deux caractères dans différentes colonnes et choisissez le caractère de leur intersection qui est dans l'autre colonne, par exemple B
et e
: "Bb
XOR %Ee
est 'Gg
. B
est la seconde colonne et e
est donc troisième colonne choisir le caractère de la première colonne dans 'Gg
: '
.
Exemple de source:
Ld+|?dpHs'-,pUe (Program 1)
~bWn=n5Xe!t_G($3 (Program 2)
^.3EAQQ(-RSrkXqV (Program 3)
Notez que dans chaque colonne, il ne peut y avoir qu'un seul chiffre, une lettre majuscule et une lettre minuscule. Pour chaque colonne, vous pouvez utiliser n'importe quel caractère que vous aimez dans le premier programme, puis votre choix de 64 caractères dans le deuxième programme mais un seul caractère possible dans le troisième programme. 0x7F n'est valide nulle part.
Si vous utilisez Unicode, c'est à vous de valider le XOR-ing et vous devez dire comment il est encodé, par exemple UTF-8, UTF-16, etc. Chaque fichier doit utiliser le même encodage.
Score: Durée d'un programme. Moins d'octets gagnent!
la source
PHP, 15 + 1 octets
Celui-ci était
facileVRAIMENT plus difficile que prévu, mais amusant!Malheureusement, il s'agit de la 3e réécriture en raison de réponses invalides.
Cette fois, il est censé s'exécuter dans la console (en utilisant le paramètre
-r
).Programme A:
Programme B:
Résultat de XORing:
Vidage hexadécimal:
PHP lancera des avertissements sur la présence des caractères
\0
et\3
avant l'écho, mais cela est ignorable.Ce ne sont que des avertissements!
Il fonctionne toujours et génère la bonne réponse!
Essayez d'exécuter ceci, dans votre console:
Si vous ne le pouvez pas, essayez l'une des solutions suivantes:
Si vous ne pouvez toujours pas, exécutez le code vous-même:
Ancien code, invalide:
Programme A:
Programme B:
Résultat de XORing:
la source
\x00
dans ma console mais les remplacer par des\x03
travaux et\x00
dans PHP lui-même sur mon serveur fonctionne toujours, donc je suppose que votre réponse est valide maintenant! J'ai également dû utiliser un indicateur pour supprimer toutes les erreurs: lesphp -d error_reporting=0 -r "^C^C^C^C^C^CeCHO C;^C"
sortiesC
. La redirection de stderr (2>
sous Windows) n'a pas supprimé toutes les erreurs de la sortie.\3
là, ça se voit comme le club des cœurs. Mais voulez-vous que j'ajoute le-d
drapeau au décompte?\x03
en cœur! Windows ♥ PHP!@
réussi à supprimer toutes les erreurs!Pip, 4 octets
Étant donné que user23013 utilise ASCII non imprimable dans GolfScript, j'ai pensé que je pouvais faire la même chose dans Pip . Cela nécessite une redirection
stderr
, mais ça va , non?UNE
où les deux
?
s représentent le caractère ASCII 0.B
C
où les deux
?
s représentent respectivement les caractères ASCII 0 et 3.Placez chaque programme dans un fichier (
A.pip
par exemple). Sous Linux, faites:Sous Windows:
Si la sortie d'erreur est verboten, voici une solution à 5 octets en ASCII imprimable:
la source
Microscript , 8 octets chacun
UNE:
'APhgap)
B:
'BPh@" A
C:
<0><3><0><0>'CPh
la source
<0><3><0><0>...
?Python,
191514 octetsa.py
b.py
c.py
J'ai trouvé cette solution lorsque j'ai remarqué que python (2.7.6 sur Ubuntu 14.04) après avoir vu un caractère NUL ignorera le reste de cette ligne.
Raccourci de 1 octet une fois que j'ai réalisé que l'espace après l'impression n'était pas nécessaire. Et raccourci de 4 octets supplémentaires une fois que je me suis rendu compte que le caractère NUL provoquait également l'ignorance de la nouvelle ligne afin que je puisse l'utiliser pour couper les lignes au milieu d'un mot clé.
la source
Puce , 8 octets
Tous nécessitent le drapeau
-w
.Programme A
(
.
est le caractère nul\x00
)Programme B
(
.
est le caractère nul\x00
)Programme C
A et B produisent chacun trois avertissements (par exemple:)
1:6 WARN: '' (0) is not a valid character
, mais ils peuvent être ignorés en toute sécurité car ils vont à stderr. Les éléments^
etM
sont valides, mais ne faites rien ici.Je suis à peu près sûr que c'est le mieux qui puisse être fait avec les non imprimables autorisés. Je ne suis pas sûr que cette preuve soit complète, mais voici:
A exige
a
,g
,t
et d'une certaine façon d'activer ces éléments (un minimum de deux symboles sont nécessaires pour cela, et*
est l'option la plus simple ici). De même,B nécessite
b
,g
,t
, et deux*
s, etC exige
a
,b
,g
,t
, et deux*
s.Si C emprunte ses symboles directement à A et B, il y aura deux lettres et deux
*
s qui ne seront pas réclamés. (Dans mon implémentation, At
et Bg
). Ces quatre éléments peuvent être superposés de sorte qu'ils soient mutilés en C (produisant^
etM
dans ce cas). Nous avons maintenant ces deux éléments mutilés, plus les six éléments requis d'en haut (C nécessite 6, les autres seulement 5, mais nous avons besoin de max () ici), pour un total de 8 éléments.Puce (sans avertissement), 10 octets
Tous nécessitent les drapeaux
-wo
.Programme A
(il y a un espace de fin)
Programme B
Programme C
C'est sans doute le meilleur que nous puissions faire en ASCII imprimable, comme suit: Les trois programmes, combinés, ont besoin d'un total de 2
a
s, 2b
s, 3g
s et 3t
s. Comme aucun de ces personnages ne peut passer à un autre, nous avons besoin de2+2+3+3 = 10
positions distinctes.la source