Anagram Quines (Utas Polisi)

26

Ini adalah tantangan Benang Perampok dapat ditemukan di sini

Tantangan Anda adalah menulis program yang menampilkan anagram kode sumbernya tetapi bukan kode sumber aslinya.

Misalnya program Python berikut,

print`'print*2``'*2`

cetakan

'print*2``print*2``'

yang memiliki semua karakter yang sama dengan sumber aslinya tetapi dalam urutan yang berbeda.

Setelah Anda menemukan program seperti itu, sertakan output program sebagai jawaban yang menghilangkan program yang menghasilkannya. Seperti yang mungkin sudah Anda duga, perampok akan berusaha menemukan program yang Anda sembunyikan, atau program apa pun yang sesuai dengan spesifikasinya. Tujuan Anda adalah membuat program terpendek yang tidak dapat diretas oleh perampok.

Aturan

  • Seperti kebanyakan tantangan , jika jawaban Anda tetap tidak terpecahkan selama seminggu, Anda dapat menambahkan solusi yang dimaksudkan untuk jawaban Anda dan menandainya sebagai Aman . Setelah aman, sebuah jawaban tidak dapat dipecahkan oleh perampok.

  • Anda tidak perlu menyertakan bahasa solusi yang dimaksud, namun jika Anda tidak menyertakan bahasa, perampok dapat memecahkannya dalam bahasa apa pun yang mendahului tantangan, sementara jika Anda menentukan bahasa mereka hanya dapat memecahkannya dalam bahasa yang disediakan.

  • Aturan standar untuk Quines berlaku.

Wisaya Gandum
sumber
Pertanyaan saya yang biasa: dalam bahasa di mana byte tidak sesuai dengan karakter, apakah anagram di byte atau level karakter?
@ ais523 harus berupa anagram byte.
Wheat Wizard
4
Berhubungan erat
DJMcMayhem
Apakah aturan quine yang biasa berlaku untuk perampok? Apakah mereka berlaku untuk polisi?
Dennis
1
@Fatalize Jika tidak mengubah output, itu baik-baik saja tetapi output harus statis.
Wheat Wizard

Jawaban:

12

Brain-Flak , 231 byte Dipecahkan oleh Wheat Wizard

}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{][][][][][][][)()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()(

Program asli menggunakan -Aargumen.

Berikut perhitungannya:

( -> 74
) -> 74
{ -> 34
} -> 34
[ -> 7
] -> 7
Riley
sumber
Retak !
Wheat Wizard
5

Python 2, 96 byte, dipecahkan oleh math_junkie

Keluaran:

B97.off]xo) wnd[ri0'of{r1({r6-{r{rri) {r1(xo0'sjD;0'0'qhF=1({r{r2)4+}twnri2)wnlcof) yp) ) xomd2)

Golf kode waktu pertama! Semoga tidak terlalu mudah.

Agargara
sumber
2
Saya memiliki kesengsaraan print(''), chr() + ''sejauh ini
drolex
2
Retak!
pecandu matematika
4

Haskell, 107 byte, Retak oleh nimi

"$$$$'''''''',,----....::<<<<<<<<========>>>>[[[[[[[[]]]]]]]]aaddddddddddddiiiiiiiiiiiimmnnnnpprrtt||||||"

Ada tambahan baris tambahan.


Solusi asli:


main=print$id=<<[[id|i<-"main=print$id=<<[[id|i<-,i==d]>>d:[d]|d<-['$'..'|']]",i==d]>>d:[d]|d<-['$'..'|']]

Cobalah online!

Ide utama saya adalah menulis quine yang mengurutkan kode sumbernya sendiri sebelum menghasilkannya tanpa menggunakan sortfungsi pustaka . Hanya setelah percobaan awal dengan nimi , terpikir oleh saya bahwa kode program dapat diurutkan secara manual, dikodekan ke dalam program dan kemudian dicetak sambil menggandakan setiap huruf. Namun karakter yang tersedia terbatas membuat pendekatan ini lebih rumit dan celah sukses nimi sangat mirip dengan program asli saya.

Penjelasan:

main=print$                                      -- full program which prints the following string
  id=<<[[id|i<-"...",i==d]>>d:[d]|d<-['$'..'|']]
                                 |d<-['$'..'|']  -- for each char d in "$%&'()*+,-./012 ... xyz{|"
        [id|i<-"...",i==d]                       -- build a list with as many elements as d is contained in the string
                          >>d:[d]                -- replicate the string "dd" as often as the previous list is long 
  id=<<[                                       ] -- concatenate the resulting list of srings to one single string
Laikoni
sumber
@nimi Ya itu program lengkap. Bukankah ini aturan standar untuk quines?
Laikoni
Tidak yakin. Kami memiliki quine sebelum fungsi yang diizinkan. Dan bahkan jika program lengkap adalah standar, "program" dalam tantangan dapat diartikan sebagai menimpa default dan juga memungkinkan fungsi .
nimi
@nimi Maaf versi sebelumnya menyesatkan. Saya telah menulisnya setelah melihat upaya pertama Anda dan sebelum melihat itu tidak valid sesuai dengan spesifikasi. Saya bahkan menerbitkannya dan kemudian dengan cepat memutar kembali dengan harapan tidak ada yang melihatnya, seperti yang Anda lihat dalam sejarah revisi. Setelah melihat versi tetap Anda, saya kembali ke versi ini, tanpa mempertimbangkan bahwa deskripsi tidak cocok lagi.
Laikoni
Saya tidak yakin jika Anda merujuk ke jawaban saya itu sebabnya saya menghapus komentar saya. Memang mungkin untuk menggunakan string yang dipilih (ganti ;dengan NL): i[]d=[d,d];main=print$i[]=<<"$$ ... |||"--dan semua karakter yang hilang setelah --. Saya menemukan versi ini setelah jawaban saya dari utas perampok dan setelah Anda mengungkapkan jawaban Anda dengan penjelasan yang sekarang berubah.
nimi
4

Bahasa yang tidak ditentukan, 124 byte,

Dalam tema jawaban DJMcMayhem ini adalah 32 karakter ASCII pertama (selain 0x00) dicetak masing-masing empat kali. Karena tidak ada yang terlihat, saya belum memasukkan kode aktual dalam jawaban saya.

Inilah hexdump:

00000000: 0101 0101 0202 0202 0303 0303 0404 0404  ................
00000010: 0505 0505 0606 0606 0707 0707 0808 0808  ................
00000020: 0909 0909 0a0a 0a0a 0b0b 0b0b 0c0c 0c0c  ................
00000030: 0d0d 0d0d 0e0e 0e0e 0f0f 0f0f 1010 1010  ................
00000040: 1111 1111 1212 1212 1313 1313 1414 1414  ................
00000050: 1515 1515 1616 1616 1717 1717 1818 1818  ................
00000060: 1919 1919 1a1a 1a1a 1b1b 1b1b 1c1c 1c1c  ................
00000070: 1d1d 1d1d 1e1e 1e1e 1f1f 1f1f            ............

Namun di sini ada beberapa Python yang mencetaknya (dan baris baru) jika Anda mau:

print"".join(chr(x)*4for x in range(1,32))
Wisaya Gandum
sumber
4

Pyth , 32 byte, Retak oleh math_junkie

J+J=JJ 1-2#pTN%"J+J=JJ 1-2#pTN%"

Solusi asli

J2#p+"J+J=JJ 1-2#pTN%"N=J-J1 %TJ

Cobalah online!

J2                               # Assign 2 to the variable J
  #                              # Infinite loop, break on error
    +"J+J=JJ 1-2#pTN%"N          # appending a '"' to the string 'J+J=JJ 1-2#pTN%'
   p                             # print the string above
                       =J-J1     # subtract 1 from J and assign back to J
                             %TJ # calculated 10%J, with a blank space before to supress output,
                                 # on the 3rd iteration this will be 10%0 that will generate an
                                 # erro and will break out the loop
tongkat
sumber
Retak!
pecandu matematika
4

V , 21 byte (Aman!)


"&./124ipq|ÍÓÚîñòÿ

Perhatikan baris baru terkemuka.

Karena ini mengandung unsintables, berikut adalah hexdump:

00000000: 0a16 1b22 262e 2f31 3234 6970 717c cdd3  ..."&./124ipq|..
00000010: daee f1f2 ff                             .....

Untuk membantu orang lain, berikut ini tautan ke Standar V yang dapat diperpanjang


Ini versi aslinya:

ñi241"qp|Ó./ò&
ÚÍîÿ

Cobalah online!

Versi yang dapat dibaca adalah:

ñi<C-v>241<esc>"qp|Ó./ò&
ÚÍîÿ

Cara ini bekerja adalah dengan menyortir sort ke quine extensible default. Ketika saya berpikir tentang V-quines karena jawaban ini, saya menyadari bahwa quine extensible standar dapat dipersingkat tiga byte, jadi solusi ini bisa jadi:

ñiéÑ~"qp|Ó./ò&
ÚÍîÿ

Penjelasan:

ñi<C-v>241<esc>"qp  " Standard V-quine. Everything after this is recorded into register 'q'
                    " so we can do whatever we want without ruining it's "quine-ness"


|       " Go the first character on the line (I just realized now that this is pointless)
 Ó./ò&  " Put every character on a newline
Ú       " Sort every line
 Íî     " Join all lines together
   ÿ    " Necessary for V-quines
DJMcMayhem
sumber
1
mengendus Aku mencium regex segar
Kritixi Lithos
3

Bahasa yang tidak ditentukan, 254 byte Retak oleh @Dennis!

Saya ragu ini akan menang untuk singkatnya, tetapi akan sulit untuk retak, jadi masih layak untuk dibuat.

Karena bug, urutannya 0x0b, 0x0c, 0x0asedikit campur aduk, tapi ini jelas merupakan hasil nyata.

Saya pikir saya tidak akan menentukan bahasa hanya supaya saya bisa melihat bahasa apa yang mungkin digunakan. Karena outputnya kebanyakan non-ASCII, berikut adalah hexdump dari output:

00000000: 0102 0304 0506 0708 090b 0c0a 0e0f 1011  ................
00000010: 1213 1415 1617 1819 1a1b 1c1d 1e1f 2021  .............. !
00000020: 2223 2425 2627 2829 2a2b 2c2d 2e2f 3031  "#$%&'()*+,-./01
00000030: 3233 3435 3637 3839 3a3b 3c3d 3e3f 4041  23456789:;<=>?@A
00000040: 4243 4445 4647 4849 4a4b 4c4d 4e4f 5051  BCDEFGHIJKLMNOPQ
00000050: 5253 5455 5657 5859 5a5b 5c5d 5e5f 6061  RSTUVWXYZ[\]^_`a
00000060: 6263 6465 6667 6869 6a6b 6c6d 6e6f 7071  bcdefghijklmnopq
00000070: 7273 7475 7677 7879 7a7b 7c7d 7e7f 8081  rstuvwxyz{|}~...
00000080: 8283 8485 8687 8889 8a8b 8c8d 8e8f 9091  ................
00000090: 9293 9495 9697 9899 9a9b 9c9d 9e9f a0a1  ................
000000a0: a2a3 a4a5 a6a7 a8a9 aaab acad aeaf b0b1  ................
000000b0: b2b3 b4b5 b6b7 b8b9 babb bcbd bebf c0c1  ................
000000c0: c2c3 c4c5 c6c7 c8c9 cacb cccd cecf d0d1  ................
000000d0: d2d3 d4d5 d6d7 d8d9 dadb dcdd dedf e0e1  ................
000000e0: e2e3 e4e5 e6e7 e8e9 eaeb eced eeef f0f1  ................
000000f0: f2f3 f4f5 f6f7 f8f9 fafb fcfd feff       ..............

Itu adalah setiap karakter ASCII tunggal kecuali untuk 0x00dan 0x0Dkarena mereka berdua menyebabkan perilaku aneh pada TIO. Selamat bersenang-senang! >: D


Kode asli dalam V.

Cobalah online

Hexdump:

00000000: ee02 0304 0506 0708 090b 0c0e 0f10 1112  ................
00000010: 1314 1516 1718 191a 1b1c 1d1e 1f20 2122  ............. !"
00000020: 2324 2526 2728 292a 2b2c 2d2e 2f30 3132  #$%&'()*+,-./012
00000030: 3334 3536 3738 393a 3b3c 3d3e 3f40 4142  3456789:;<=>?@AB
00000040: 4344 4546 4748 494a 4b4c 4d4e 4f50 5152  CDEFGHIJKLMNOPQR
00000050: 5455 5657 5859 5a5b 5c5d 5e5f 6061 6263  TUVWXYZ[\]^_`abc
00000060: 6465 6667 6869 6a6b 6c6d 6e6f 7071 7273  defghijklmnopqrs
00000070: 7475 7677 7879 7a7b 7c7d 7e7f 8081 8283  tuvwxyz{|}~.....
00000080: 8485 8687 8889 8a8b 8c8d 8e8f 9091 9293  ................
00000090: 9495 9697 9899 9a9b 9c9d 9e9f a0a1 a2a3  ................
000000a0: a4a5 a6a7 a8a9 aaab adae afb0 b1b2 b3b4  ................
000000b0: b5b6 b7b8 b9ba bbbc bdbe bfc0 c1c2 c3c4  ................
000000c0: c5c6 c7c8 c9ca cbcc cdce cfd0 d1d2 d3d4  ................
000000d0: d5d6 d7d8 d9da dbdc ddde dfe0 e1e2 e3e4  ................
000000e0: e5e6 e7e8 e9ea ebec edef f0f1 f2f3 f4f5  ................
000000f0: f6f7 f8f9 fafb fcfd feff 0a53 ac01       ...........S..

Pada dasarnya, semuanya sampai Smemasukkan sampah ke dalam buffer. Di 0xEEawal hanya untuk memastikan bahwa segala sesuatu setelah baris baru tidak terjadi di bagian loop atau makro. Lalu, kita lakukan

¬<C-a>   "Insert every character in the range 0x01-0xFF
DJMcMayhem
sumber
2
Retak.
Dennis
2

Oktaf , 91 byte

a=['111111111123666667eeegggkkknnszEEGn};:;:'];
''''''''''(),,,,,-[[[]]]aaaddip;;=ds1010]);
kebingungan
sumber
Retak!
pecandu matematika
Tidak cukup ... Anda mendapatkan ekstra '' di akhir output
drolex
Seharusnya bagus sekarang
pecandu matematika
Ini dia. Sudah selesai dilakukan dengan baik!
drolex
2

PHP, 130 Bytes (Aman)

    $$$$$$''''(((((((()))))))),,22;;;;;;<<==??\\\\____aaccddeeeeeeeehhhhiiiillllmmoooooopppppppppprrrrrrrrssssssssttttttttttvvvvvv

Solusi Asli

Saya tidak bisa mengerti bahwa itu tidak retak

<?php $v=str_split(str_repeat('<?php\ $v=str_split(str_repeat(\'\',2));sort($v);echo\ implode($v);',2));sort($v);echo implode($v);
Jörg Hülsermann
sumber
0

Tebak, 43 byte

{4"2)4q):)u(4o'{4t:q(e)(",(t22(u()o)?,?'2e

Itu adalah panggilan yang sulit apakah akan berbagi bahasa apa itu atau tidak, tapi saya pikir opsi ini lebih baik. Perhatikan bahwa ada baris baru yang tertinggal.

Bijan
sumber
1
Sebuah jawaban hanya aman jika Anda menambahkan solusi yang dimaksud ke jawabannya. Sampai saat itu, jawaban ini tidak aman.
mbomb007