Tulis dua program sehingga ketika byte kode sumbernya adalah XOR-d bersama-sama menghasilkan program ketiga yang valid, semua dalam bahasa yang sama. Panjang masing-masing dari tiga program dalam byte harus identik.
Program pertama harus di-output A
. Program kedua harus di-output B
. Program ketiga harus di-output C
.
Baris baru adalah opsional, tetapi jika satu menampilkan baris baru, yang lain juga harus.
Jika Anda menggunakan flag baris perintah apa pun, Anda harus menggunakan flag yang sama untuk setiap program, yaitu ketiga program harus dijalankan dengan cara yang sama. Jika Anda menggunakan bahasa seperti PHP yang secara tradisional dimulai dengan kombinasi karakter yang sama, mis. <?
Tetapi ada opsi baris perintah yang menjatuhkan karakter yang mungkin Anda gunakan, yaitu PHP hanya harus dijalankan dari baris perintah.
Tidak ada input yang diizinkan. Setiap program harus mandiri.
Jika program Anda seluruhnya ditulis dalam ASCII, tabel berikut mungkin membantu:
Codes 0x20 - 0x3F
!"#$%&'()*+,-./
0123456789:;<=>?
Codes 0x40 - 0x5F
@ABCDEFGHIJKLMNO
PQRSTUVWXYZ[\]^_
Codes 0x60 - 0x7E
`abcdefghijklmno
pqrstuvwxyz{|}~
EDIT
Menggunakan karakter non-cetak diperbolehkan karena saya tidak secara tegas melarangnya. Namun, jika Anda ingin memposting versi yang hanya menggunakan karakter yang dapat dicetak, itu akan lebih bagus! (Nilai mana saja yang paling pendek.) "Faktor pintar" menggunakan kode kontrol agak berkurang sekarang ...
AKHIR EDIT
XOR-ing dua kode dari blok yang sama akan menghasilkan kode kurang dari 0x20 yang karenanya bukan kode ASCII yang dapat dicetak, misalnya 0x41 ( A
) XOR 0x5A ( Z
) = 0x1B. XOR-ing dua kode dari blok yang berbeda akan menghasilkan kode dari blok ketiga, misalnya 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 @`
Cari dua karakter dari kolom yang berbeda dan pilih karakter dari persimpangan mereka yang ada di kolom lain, misalnya B
dan e
: "Bb
XOR %Ee
adalah 'Gg
. B
adalah kolom kedua dan e
merupakan kolom ketiga sehingga memilih karakter dari kolom pertama di 'Gg
: '
.
Sumber contoh:
Ld+|?dpHs'-,pUe (Program 1)
~bWn=n5Xe!t_G($3 (Program 2)
^.3EAQQ(-RSrkXqV (Program 3)
Perhatikan bahwa di setiap kolom hanya ada satu digit, satu huruf besar dan satu huruf kecil. Untuk setiap kolom Anda dapat menggunakan karakter apa pun yang Anda suka di program pertama, kemudian pilihan Anda 64 karakter di program kedua tetapi hanya satu karakter yang mungkin di program ketiga. 0x7F tidak berlaku di mana pun.
Jika Anda menggunakan Unicode, terserah Anda untuk memvalidasi XOR-ing dan Anda harus mengatakan bagaimana itu dikodekan, misalnya UTF-8, UTF-16, dll. Setiap file harus menggunakan pengkodean yang sama.
Nilai: Panjang satu program. Bytes paling sedikit menang!
sumber
PHP, 15 +1 byte
Yang ini
mudahBENAR-BENAR lebih sulit dari yang diharapkan, tetapi menyenangkan!Sayangnya, ini adalah penulisan ulang ke-3 karena jawaban yang tidak valid.
Kali ini, ini dimaksudkan untuk berjalan di konsol (menggunakan parameter
-r
).Program A:
Program B:
Hasil XORing:
Hex dump:
PHP akan melempar peringatan tentang memiliki
\0
dan\3
karakter sebelum gema, tetapi itu diabaikan.Itu hanya peringatan!
Masih berjalan dan menampilkan jawaban yang benar!
Coba jalankan ini, di konsol Anda:
Jika tidak bisa, coba salah satu dari ini:
Jika Anda masih tidak bisa, jalankan sendiri kode:
Kode lama, tidak valid:
Program A:
Program B:
Hasil XORing:
sumber
\x00
konsol saya tetapi menggantinya dengan\x03
karya dan\x00
dalam PHP itu sendiri di server saya masih berjalan jadi saya menganggap jawaban Anda valid sekarang! Saya juga harus menggunakan flag untuk menekan semua kesalahan:php -d error_reporting=0 -r "^C^C^C^C^C^CeCHO C;^C"
OutputC
. Mengarahkan ulang stderr (di2>
bawah Windows) tidak menekan semua kesalahan dari output.\3
ada, yang menunjukkan sebagai klub hati. Tapi apakah Anda ingin saya menambahkan-d
bendera ke hitungan?\x03
hati! Windows ♥ PHP!@
berhasil menekan semua kesalahan!Pip, 4 byte
Karena user23013 menggunakan ASCII non-cetak di GolfScript, saya pikir saya bisa melakukan hal yang sama di Pip . Memang membutuhkan pengalihan
stderr
, tapi tidak apa-apa , kan?SEBUAH
di mana keduanya
?
mewakili karakter ASCII 0.B
C
di mana keduanya
?
mewakili karakter ASCII 0 dan 3, masing-masing.Tempatkan setiap program dalam file (
A.pip
misalnya). Di Linux, lakukan:Di Windows:
Jika output kesalahan adalah verboten, inilah solusi 5-byte dalam ASCII yang dapat dicetak:
sumber
Microscript , masing-masing 8 byte
SEBUAH:
'APhgap)
B:
'BPh@" A
C:
<0><3><0><0>'CPh
sumber
<0><3><0><0>...
?Python,
191514 bytea.py
b.py
c.py
Saya datang dengan solusi ini ketika saya memperhatikan bahwa python (2.7.6 pada Ubuntu 14.04) setelah melihat karakter NUL akan mengabaikan sisa baris itu.
Dipersingkat 1 byte setelah saya menyadari bahwa ruang setelah cetak tidak diperlukan. Dan dipersingkat oleh 4 byte lebih setelah saya menyadari bahwa karakter NUL juga menyebabkan baris baru diabaikan sehingga saya dapat menggunakannya untuk memecah baris di tengah kata kunci.
sumber
Chip , 8 byte
Semua membutuhkan bendera
-w
.Program A
(
.
adalah karakter nol\x00
)Program B
(
.
adalah karakter nol\x00
)Program C
Baik A dan B masing-masing menghasilkan tiga peringatan (misalnya:)
1:6 WARN: '' (0) is not a valid character
, tetapi mereka dapat diabaikan dengan aman karena mereka pergi ke stderr. Elemen^
danM
valid, tetapi tidak melakukan apa pun di sini.Saya cukup yakin bahwa ini adalah yang terbaik yang dapat dilakukan dengan non-cetak diperbolehkan. Saya tidak yakin bukti ini lengkap, tetapi begini:
Sebuah membutuhkan
a
,g
,t
, dan beberapa cara untuk mengaktifkan unsur-unsur tersebut (minimal dua simbol yang diperlukan untuk ini, dan*
merupakan pilihan yang paling sederhana di sini). Demikian pula,B membutuhkan
b
,g
,t
, dan dua*
s, danC membutuhkan
a
,b
,g
,t
, dan dua*
s.Jika C meminjam simbolnya langsung dari A dan B, akan ada dua huruf dan dua
*
yang tetap tidak diklaim. (Dalam implementasi saya, At
dan Bg
). Keempat elemen tersebut dapat tumpang tindih sehingga mereka hancur dalam C (berproduksi^
danM
dalam hal ini). Kami sekarang memiliki dua elemen yang hancur itu, ditambah enam elemen yang diperlukan dari atas (C membutuhkan 6, yang lainnya hanya 5, tetapi kami membutuhkan maks () di sini), untuk total 8 elemen.Chip (bebas peringatan), 10 byte
Semua membutuhkan bendera
-wo
.Program A
(ada ruang tambahan)
Program B
Program C
Ini terbukti yang terbaik yang bisa kita lakukan dalam ASCII yang dapat dicetak, sebagai berikut: Tiga program, gabungan, membutuhkan total 2
a
s, 2b
s, 3g
s, dan 3t
s. Karena tidak satu pun dari karakter ini dapat bertransisi ke karakter lain, kami memerlukan2+2+3+3 = 10
posisi terpisah.sumber