Napisz dwa programy, tak że gdy bajty ich kodu źródłowego są razem XOR-d, tworzy trzeci, prawidłowy program, wszystkie w tym samym języku. Długość każdego z trzech programów w bajtach musi być identyczna.
Pierwszy program powinien wypisać A
. Drugi program powinien wyjść B
. Trzeci program powinien wyjść C
.
Nowa linia jest opcjonalna, ale jeśli jedna wypisuje nową linię, oba pozostałe również muszą.
Jeśli używasz flag wiersza poleceń, musisz mieć takie same dla każdego programu, tzn. Wszystkie trzy programy muszą być wykonane w ten sam sposób. Jeśli używasz języka takiego jak PHP, który tradycyjnie zaczyna się od tej samej kombinacji znaków, np. <?
Istnieje opcja wiersza poleceń, która usuwa te znaki, których możesz użyć, tj. PHP można uruchamiać tylko z wiersza poleceń.
Wejście nie jest dozwolone. Każdy program musi być samodzielny.
Jeśli twój program jest napisany całkowicie w ASCII, pomocne mogą być następujące tabele:
Codes 0x20 - 0x3F
!"#$%&'()*+,-./
0123456789:;<=>?
Codes 0x40 - 0x5F
@ABCDEFGHIJKLMNO
PQRSTUVWXYZ[\]^_
Codes 0x60 - 0x7E
`abcdefghijklmno
pqrstuvwxyz{|}~
EDYTOWAĆ
Używanie znaków niedrukowalnych jest dozwolone, ponieważ nie zabroniłem tego oryginalnie. Jeśli jednak chcesz opublikować wersję, która używa tylko znaków do wydruku, byłoby świetnie! (Wynik w zależności od tego, który jest najkrótszy.) „Sprytny czynnik” używania kodów kontrolnych już się trochę zużył ...
EDYCJA KOŃCOWA
XOR-ing dowolne dwa kody z tego samego bloku wygenerują kod mniejszy niż 0x20, który w związku z tym nie jest prawidłowym drukowalnym kodem ASCII, np. 0x41 ( A
) XOR 0x5A ( Z
) = 0x1B. XOR-ing dowolne dwa kody z różnych bloków wygenerują kod z trzeciego bloku, np. 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 @`
Wyszukaj dwa znaki z różnych kolumn i wybierz znak ze skrzyżowania, które znajduje się w drugiej kolumnie, np. B
I e
: "Bb
XOR %Ee
to 'Gg
. B
jest druga kolumna i e
jest trzecia kolumna więc wybrać znak z pierwszej kolumny w 'Gg
: '
.
Przykładowe źródło:
Ld+|?dpHs'-,pUe (Program 1)
~bWn=n5Xe!t_G($3 (Program 2)
^.3EAQQ(-RSrkXqV (Program 3)
Pamiętaj, że w każdej kolumnie może znajdować się tylko jedna cyfra, jedna wielka litera i jedna mała litera. Dla każdej kolumny możesz użyć dowolnego znaku, który lubisz w pierwszym programie, następnie możesz wybrać 64 znaki w drugim programie, ale tylko jeden możliwy znak w trzecim programie. 0x7F nie jest nigdzie ważny.
Jeśli używasz Unicode, to do ciebie należy sprawdzenie poprawności XOR-a i musisz powiedzieć, jak jest zakodowany, np. UTF-8, UTF-16 itp. Każdy plik musi używać tego samego kodowania.
Wynik: długość jednego programu. Wygrywa najmniej bajtów!
źródło
PHP, 15 + 1 bajtów
Ten był
łatwyNAPRAWDĘ trudniejsze niż się spodziewano, ale zabawne!Niestety jest to trzecie przepisanie z powodu nieprawidłowych odpowiedzi.
Tym razem ma on działać w konsoli (przy użyciu parametru
-r
).Program A:
Program B:
Wynik XORing:
Zrzut szesnastkowy:
PHP wyśle ostrzeżenia o wyświetlaniu znaków
\0
i\3
przed echem, ale jest to ignorowalne.To tylko ostrzeżenia!
Nadal działa i wyświetla prawidłową odpowiedź!
Spróbuj uruchomić to w konsoli:
Jeśli nie możesz, spróbuj jednego z tych:
Jeśli nadal nie możesz, uruchom sam kod:
Stary kod, nieprawidłowy:
Program A:
Program B:
Wynik XORing:
źródło
\x00
na konsoli, ale zastąpienie ich\x03
pracami i\x00
sam PHP nadal działa na moim serwerze, więc zakładam, że twoja odpowiedź jest prawidłowa! Musiałem także użyć flagi, aby stłumić wszystkie błędy: Danephp -d error_reporting=0 -r "^C^C^C^C^C^CeCHO C;^C"
wyjścioweC
. Przekierowanie stderr (2>
pod Windows) nie pomijało wszystkich błędów w danych wyjściowych.\3
powodu, że pokazuje się jako klub kier. Ale czy chcesz, żebym dodał-d
flagę do liczby?\x03
w serce! Windows ♥ PHP!@
udało się ukryć wszystkie błędy!Pip, 4 bajty
Ponieważ user23013 używa niedrukowalnego ASCII w GolfScript, pomyślałem, że mogę zrobić to samo w Pip . Wymaga przekierowania
stderr
, ale w porządku , prawda?ZA
gdzie dwa
?
s oznaczają znak ASCII 0.b
do
gdzie dwa
?
s reprezentują odpowiednio znaki ASCII 0 i 3.Umieść każdy program w pliku (
A.pip
na przykład). W systemie Linux wykonaj:W systemie Windows:
Jeśli wyjście błędu jest słowne, oto 5-bajtowe rozwiązanie w drukowanym ASCII:
źródło
Microscript , po 8 bajtów
ZA:
'APhgap)
B:
'BPh@" A
DO:
<0><3><0><0>'CPh
źródło
<0><3><0><0>...
?Pyton,
191514 bajtówa.py
b.py
c.py
Wymyśliłem to rozwiązanie, gdy zauważyłem, że python (2.7.6 na Ubuntu 14.04) po zobaczeniu znaku NUL zignoruje resztę tego wiersza.
Skrócono o 1 bajt, gdy zdałem sobie sprawę, że przestrzeń po wydruku nie jest potrzebna. I skróciłem o 4 kolejne bajty, gdy zdałem sobie sprawę, że znak NUL powoduje również ignorowanie nowej linii, dzięki czemu mogę jej używać do przerywania wierszy w środku słowa kluczowego.
źródło
Chip , 8 bajtów
Wszystkie wymagają flagi
-w
.Program A
(
.
jest znakiem zerowym\x00
)Program B
(
.
jest znakiem zerowym\x00
)Program C
Zarówno A, jak i B generują po trzy ostrzeżenia (np .
1:6 WARN: '' (0) is not a valid character
:), ale można je bezpiecznie zignorować, ponieważ przechodzą na stderr. Elementy^
iM
są ważne, ale nie rób tutaj nic.Jestem całkiem pewien, że jest to najlepsze, co można zrobić, jeśli nie można drukować. Nie jestem pewien, czy ten dowód jest kompletny, ale oto:
Wymaga
a
,g
,t
, i jakiś sposób, aby włączyć te elementy (co najmniej dwa symbole są potrzebne do tego, a*
to najprostsza opcja tutaj). Podobnie,B wymaga
b
,g
,t
, i dwa*
S iC, wymaga
a
,b
,g
,t
, i dwie*
sekundy.Jeśli C pożyczy swoje symbole bezpośrednio od A i B, będą dwie litery i dwie
*
s, które nie zostaną odebrane. (W mojej realizacji, At
i Bg
). Te cztery elementy można nakładać na siebie, tak aby były zniekształcone w C (produkowanie^
iM
tym przypadku). Mamy teraz te dwa zniekształcone elementy oraz sześć wymaganych elementów z góry (C wymaga 6, pozostałe tylko 5, ale potrzebujemy tutaj max ()), w sumie 8 elementów.Żeton (bez ostrzeżenia), 10 bajtów
Wszystkie wymagają flag
-wo
.Program A
(jest spacja)
Program B
Program C
Jest to prawdopodobnie najlepsze, co możemy zrobić w drukowanym formacie ASCII, w następujący sposób: Trzy połączone programy potrzebują łącznie 2
a
s, 2b
s, 3g
s i 3t
s. Ponieważ żadna z tych postaci nie może przejść na inną, potrzebujemy2+2+3+3 = 10
osobnych pozycji.źródło