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 . : B
und e
: "Bb
XOR %Ee
ist 'Gg
. B
Spalte zweite und e
ist 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!
quelle
PHP, 15 + 1 Bytes
Dieser war
einfachWIRKLICH 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:
Programm B:
Ergebnis des XORing:
Hex-Dump:
PHP gibt Warnungen aus, dass die Zeichen
\0
und\3
vor 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:
Wenn Sie nicht können, versuchen Sie eine der folgenden:
Wenn Sie immer noch nicht können, führen Sie den Code selbst aus:
Alter Code, ungültig:
Programm A:
Programm B:
Ergebnis des XORing:
quelle
\x00
in meine Konsole tippen, aber sie durch\x03
Works ersetzen und\x00
PHP 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"
AusgabenC
. Die Umleitung von stderr (2>
unter Windows) hat nicht alle Fehler aus der Ausgabe unterdrückt.\3
, dass sich das als Herzklub zeigt. Aber soll ich die-d
Flagge zur Zählung hinzufügen ?\x03
ein Herz geworden ist! Windows ♥ PHP!@
geschafft, alle Fehler zu unterdrücken!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
wo die beiden
?
s das ASCII-Zeichen 0 darstellen.B
C
wo die beiden
?
s die ASCII-Zeichen 0 bzw. 3 darstellen.Platzieren Sie jedes Programm in einer Datei (
A.pip
zum Beispiel). Führen Sie unter Linux Folgendes aus:Unter Windows:
Wenn die Fehlerausgabe verboten ist, ist hier eine 5-Byte-Lösung in druckbarem ASCII:
quelle
Mikroskript mit jeweils 8 Bytes
EIN:
'APhgap)
B:
'BPh@" A
C:
<0><3><0><0>'CPh
quelle
<0><3><0><0>...
?Python,
191514 Bytesa.py
b.py
c.py
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.
quelle
Chip , 8 Bytes
Alle benötigen die Flagge
-w
.Programm A
(
.
ist das Nullzeichen\x00
)Programm B
(
.
ist das Nullzeichen\x00
)Programm C
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^
undM
sind 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). ÄhnlichB erfordert
b
,g
,t
, und zwei*
s, undC 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 At
und Bg
). Diese vier Elemente können überlappt werden, so dass sie in C zerfetzt werden (^
undM
in 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
(Es gibt ein Leerzeichen)
Programm B
Programm C
Dies ist nachweislich das Beste, was wir mit druckbarem ASCII erreichen können: Die drei Programme zusammen benötigen insgesamt 2
a
s, 2b
s, 3g
s und 3t
s. Da keines dieser Zeichen in ein anderes übergehen kann, benötigen wir2+2+3+3 = 10
separate Positionen.quelle