XOR verschlüsselt Ihre Programme mit der Quelle anderer Programme

24

Schreiben Sie zwei Programme so, dass, wenn die Bytes ihres Quellcodes XOR-d sind, ein drittes gültiges Programm in derselben Sprache erstellt wird. Die Länge jedes der drei Programme in Bytes muss identisch sein.

Das erste Programm sollte ausgegeben werden A. Das zweite Programm sollte ausgegeben werden B. Das dritte Programm sollte ausgegeben werden C.

Ein Zeilenumbruch ist optional, aber wenn einer einen Zeilenumbruch ausgibt, müssen auch beide anderen Zeilenumbrüche erfolgen.

Wenn Sie Befehlszeilen-Flags verwenden, müssen Sie für jedes Programm die gleichen Flags verwenden, dh, alle drei Programme müssen auf die gleiche Weise ausgeführt werden. Wenn Sie eine Sprache wie PHP verwenden, die traditionell mit der gleichen Zeichenkombination beginnt <?, es jedoch eine Befehlszeilenoption gibt, die die Zeichen löscht, die Sie stattdessen verwenden können, dh PHP muss nur über die Befehlszeile ausgeführt werden.

Es ist keine Eingabe erlaubt. Jedes Programm muss eigenständig sein.

Wenn Ihr Programm vollständig in ASCII geschrieben ist, können die folgenden Tabellen hilfreich sein:

Codes 0x20 - 0x3F
 !"#$%&'()*+,-./
0123456789:;<=>?

Codes 0x40 - 0x5F
@ABCDEFGHIJKLMNO
PQRSTUVWXYZ[\]^_

Codes 0x60 - 0x7E
`abcdefghijklmno
pqrstuvwxyz{|}~

BEARBEITEN

Die Verwendung von nicht druckbaren Zeichen ist erlaubt, da ich dies ursprünglich nicht ausdrücklich untersagt habe. Wenn Sie jedoch eine Version veröffentlichen möchten, in der auch nur druckbare Zeichen verwendet werden, wäre das großartig! (Punktzahl, welche die kürzeste ist.) Der "clevere Faktor" bei der Verwendung von Steuercodes ist jetzt etwas abgenutzt ...

ENDE BEARBEITEN

Das XOR-Verknüpfen von zwei beliebigen Codes aus demselben Block erzeugt einen Code unter 0x20, der daher kein gültiger druckbarer ASCII-Code ist, z. B. 0x41 ( A) XOR 0x5A ( Z) = 0x1B. Das XOR-Verknüpfen von zwei beliebigen Codes aus verschiedenen Blöcken erzeugt einen Code aus dem dritten Block, z. B. 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  @`

Suchen Sie nach zwei Zeichen aus verschiedenen Spalten und wählen Sie das Zeichen aus der Schnittmenge in der anderen Spalte aus, z. B . : Bund e: "BbXOR %Eeist 'Gg. BSpalte zweite und eist so dritte Spalte des Charakters von der ersten Spalte Pick in 'Gg: '.

Beispielquelle:

 Ld+|?dpHs'-,pUe    (Program 1)
~bWn=n5Xe!t_G($3    (Program 2)
^.3EAQQ(-RSrkXqV    (Program 3)

Beachten Sie, dass es in jeder Spalte nur eine Ziffer, einen Großbuchstaben und einen Kleinbuchstaben geben kann. Für jede Spalte können Sie im ersten Programm ein beliebiges Zeichen verwenden, im zweiten Programm 64 Zeichen, im dritten Programm jedoch nur ein mögliches Zeichen. 0x7F ist nirgendwo gültig.

Wenn Sie Unicode verwenden, müssen Sie das XOR-Verfahren validieren und angeben, wie es codiert ist, z. B. UTF-8, UTF-16 usw. Jede Datei muss dieselbe Codierung verwenden.

Prüfungsergebnis: Länge eines Programms. Nur wenige Bytes gewinnen!

CJ Dennis
quelle

Antworten:

13

GolfScript, 6 Bytes

EIN

A'AA'|

B

cdc"B"

C

"C"ce^

|und ^sind setwise oder und xor mit der leeren Eingabezeichenfolge, die nichts anderes tun würde, als Duplikate in der Zeichenfolge zu entfernen.

Originalversion (mit nicht druckbaren Zeichen)

EIN

Xz'A'v

B

z9\x05"B"

C

"C"ceT

GolfScript ignoriert die undefinierten Dinge und die drei Programme sind gerecht 'A' "B" "C".

jimmy23013
quelle
12

Javascript, 23 Bytes

Programm A:

alert(' A '[~-~~2],'B')

Programm B:

alert(FL$RSsYnYW1f='B')

Programm C:

\0\0\0\0\0\0alert('C')\0;\0\0\03\0\0

Sie können die Konvertierung mit folgender Funktion testen:

function xorString(a, b) {
  b = b || '';
  var length = Math.max(a.length, b.length);
  var chars = a.split('').map(function(charA, i) {
    var charB = b[i] || ' ';
    return String.fromCharCode(charA.charCodeAt(0) ^ charB.charCodeAt(0));
  });

  return chars.join('');
}
George Reith
quelle
Schön!!! Sie können ein Stacksnippet einfügen, das dies anzeigt.
Ismael Miguel
3

PHP, 15 + 1 Bytes

Dieser war einfach WIRKLICH härter als erwartet, aber lustig!
Leider ist dies die 3. Neufassung aufgrund ungültiger Antworten.

Dieses Mal soll es in der Konsole ausgeführt werden (mithilfe des Parameters -r).

Programm A:

echo A;E925Z9A;

Programm B:

echo B; zzzzzz;

Ergebnis des XORing:

\0\0\0\0\0\3\0eCHO C;\0 //base 64: AAAAAAADAGVDSE8gQzsA

Hex-Dump:

   |00|01|02|03|04|05|06|07|08|09|0A|0B|0C|0D|0E|0F|      TEXT      
--------------------------------------------------------------------
00 |00|00|00|00|00|03|00|65|43|48|4F|20|43|3B|00|  |.......eCHO C;.
====================================================================

PHP gibt Warnungen aus, dass die Zeichen \0und \3vor dem Echo stehen, aber das ist ignorierbar.
Es sind nur Warnungen!
Es läuft immer noch und gibt die richtige Antwort aus!


Führen Sie dies in Ihrer Konsole aus:

php -r "@eval('echo B; zzzzzz;' ^ 'echo A;E925Z9A;');"

Wenn Sie nicht können, versuchen Sie eine der folgenden:

Wenn Sie immer noch nicht können, führen Sie den Code selbst aus:

<?php

error_reporting( 0 );

$program_a = 'echo A;E925Z9A;';

$program_b = 'echo B; zzzzzz;';

eval( $program_a );

eval( $program_b );

eval( $program_c = $program_a ^ $program_b );

echo PHP_EOL, 'a ^ b = ';

var_dump( $program_c );

Alter Code, ungültig:

Programm A:

<?=A;zzzzz;

Programm B:

<?=B;FEG9A;

Ergebnis des XORing:

\0\0\0\0<?=C;\0 //base64: AAAAAwA8Pz1DOwA=
Ismael Miguel
quelle
Ich kann nicht wirklich \x00in meine Konsole tippen, aber sie durch \x03Works ersetzen und \x00PHP selbst auf meinem Server läuft immer noch, also gehe ich davon aus, dass Ihre Antwort jetzt gültig ist! Ich musste auch ein Flag verwenden, um alle Fehler zu unterdrücken: php -d error_reporting=0 -r "^C^C^C^C^C^CeCHO C;^C"Ausgaben C. Die Umleitung von stderr ( 2>unter Windows) hat nicht alle Fehler aus der Ausgabe unterdrückt.
CJ Dennis
Ihr Programm in der Windows-Konsole: "♥ eCHO C;"!
CJ Dennis
@CJDennis Warnungen werden immer ignoriert. Wenn es ein schwerwiegender Fehler wäre, wäre es der schlimmste. Aber ich finde es seltsam, dass es das ausgibt, wenn XORing. Aber vielleicht liegt das auch daran \3, dass sich das als Herzklub zeigt. Aber soll ich die -dFlagge zur Zählung hinzufügen ?
Ismael Miguel
Machen Sie sich keine Sorgen, da Sie den GolfScript-Code nicht übertreffen. Wenn Sie eine 6-Byte-Version finden, muss ich das überdenken! Aber ich musste wirklich hart arbeiten, ohne meine php.ini-Datei neu zu konfigurieren, damit es sauber funktioniert! Mir hat gefallen, wie aus Windows \x03ein Herz geworden ist! Windows ♥ PHP!
CJ Dennis
1
Ja, das hat es @geschafft, alle Fehler zu unterdrücken!
CJ Dennis
3

Pip, 4 Bytes

Da user23013 nicht druckbares ASCII in GolfScript verwendet, dachte ich, ich könnte das gleiche in Pip tun . Es erfordert eine Umleitung stderr, aber das ist in Ordnung , oder?

EIN

??'A

wo die beiden ? s das ASCII-Zeichen 0 darstellen.

B

'C'B

C

'C??

wo die beiden ? s die ASCII-Zeichen 0 bzw. 3 darstellen.

Platzieren Sie jedes Programm in einer Datei ( A.pipzum Beispiel). Führen Sie unter Linux Folgendes aus:

./pip.py A.pip 2>/dev/null

Unter Windows:

pip.py A.pip 2>nul

Wenn die Fehlerausgabe verboten ist, ist hier eine 5-Byte-Lösung in druckbarem ASCII:

pAa'A
 f"B"
P'Cec
DLosc
quelle
Ja, sowohl die Weiterleitung von stderr (so hässlich es ist!) Als auch die Verwendung von nicht druckbaren Zeichen sind zulässig. Ich freue mich, dass Sie auch eine vollständig druckbare Version veröffentlichen!
CJ Dennis
2

Mikroskript mit jeweils 8 Bytes

EIN: 'APhgap)

B: 'BPh@" A

C: <0><3><0><0>'CPh

SuperJedi224
quelle
Ich habe nicht bemerkt, dass so viele Sprachen mit Steuercodes in der Quelle sehr verzeihen. Schauen Sie sich die anderen Antworten an, von denen einige nicht druckbare Codes verwenden. Fühlen Sie sich frei, das Gleiche zu tun!
CJ Dennis
Ich dachte, es hieß, kein druckfreies ASCII zu verwenden, aber ich könnte mich irren. EDIT: Und jetzt sehe ich, dass Sie es geändert haben. Okay, ich werde sehen, was ich tun kann.
SuperJedi224
1
Sollte das nicht sein <0><3><0><0>...?
CJ Dennis
Du hast recht. Vielen Dank, dass Sie darauf hingewiesen haben.
SuperJedi224
2

Python, 19 15 14 Bytes

a.py

00000000  70 72 69 6e 00 28 32 50  69 0a 74 22 41 22        |prin.(2Pi.t"A"|

b.py

00000000  70 72 69 6e 74 22 42 22  00 64 00 00 02 00        |print"B".d....|

c.py

00000000  00 00 00 00 74 0a 70 72  69 6e 74 22 43 22        |....t.print"C"|

Ich kam auf diese Lösung, als ich bemerkte, dass Python (2.7.6 unter Ubuntu 14.04) nach dem Anzeigen eines NUL-Zeichens den Rest dieser Zeile ignoriert.

Um 1 Byte verkürzt, als ich merkte, dass der Platz nach dem Drucken nicht benötigt wurde. Und um weitere 4 Bytes gekürzt, als mir klar wurde, dass das NUL-Zeichen auch dazu führt, dass die neue Zeile ignoriert wird, sodass ich damit Zeilen in der Mitte eines Schlüsselworts umbrechen kann.

Kasperd
quelle
0

Chip , 8 Bytes

Alle benötigen die Flagge -w .

Programm A

a*gt*...

(. ist das Nullzeichen \x00)

Programm B

...*gb*t

(. ist das Nullzeichen \x00)

Programm C

a*g^Mb*t

Sowohl A als auch B geben jeweils drei Warnungen aus (z. B. 1:6 WARN: '' (0) is not a valid character:). Sie können jedoch ignoriert werden, da sie nach stderr wechseln. Die Elemente^ und Msind gültig, aber hier nichts tun.

Ich bin mir ziemlich sicher, dass dies das Beste ist, was mit nicht druckbaren Dateien möglich ist. Ich bin mir nicht sicher, ob dieser Beweis vollständig ist, aber hier ist er:

A erfordert a, g, t, und eine Möglichkeit , diese Elemente zu aktivieren (ein Minimum von zwei Symbolen für diese benötigt, und *ist die einfachste Option hier). Ähnlich
B erfordert b, g, t, und zwei *s, und
C erfordert a, b, g, t, und zwei *s.

Wenn C seine Symbole direkt von A und B ausleiht, gibt es zwei Buchstaben und zwei *s, die nicht beansprucht werden. (In meiner Implementierung A tund B g). Diese vier Elemente können überlappt werden, so dass sie in C zerfetzt werden ( ^und Min diesem Fall produzieren). Wir haben jetzt diese zwei verstümmelten Elemente plus die sechs erforderlichen Elemente von oben (C benötigt 6, die anderen nur 5, aber wir brauchen hier max ()) für insgesamt 8 Elemente.


Chip (warnfrei), 10 Bytes

Alle benötigen die Fahnen -wo.

Programm A

a*HH^t*Gg 

(Es gibt ein Leerzeichen)

Programm B

KKb*t*^g G

Programm C

*a*b*^t Gg

Dies ist nachweislich das Beste, was wir mit druckbarem ASCII erreichen können: Die drei Programme zusammen benötigen insgesamt 2 as, 2 bs, 3 gs und 3 ts. Da keines dieser Zeichen in ein anderes übergehen kann, benötigen wir 2+2+3+3 = 10separate Positionen.

Phlarx
quelle