Anagram Quines(警官のスレッド)


26

これは挑戦です。強盗のスレッドはこちらにあります

あなたの挑戦は、ソースコードのアナグラムを出力するが、元のソースコード自体は出力しないプログラムを書くことです。

たとえば、次のPythonプログラムは、

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

プリント

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

元のソースと同じ文字をすべて持っていますが、順序は異なります。

そのようなプログラムを見つけたら、それを生成するプログラムを省略した回答としてプログラムの出力を含めます。ご想像のとおり、強盗はあなたが隠したプログラム、または仕様に合ったプログラムを見つけようとします。あなたの目標は、強盗がクラックできない最短のプログラムを作成することです。

ルール

  • ほとんどの課題と同様に、回答が1週間クラックされない場合は、回答に目的のソリューションを追加し、安全とマークすることができます。いったん安全になったら、強盗によって答えを解読することはできません。

  • 意図したソリューションの言語を含める必要はありませんが、言語を含めない場合、強盗はチャレンジより前の言語でそれをクラックできますが、言語を指定すると、提供された言語でのみクラックする可能性があります。

  • Quinesの標準ルールが適用されます。


私の通常の質問:バイトが文字に対応しない言語では、アナグラムはバイトまたは文字レベルですか?

@ ais523バイトのアナグラムである必要があります。
小麦ウィザード


強盗には通常のクインルールが適用されますか?彼らは警官に適用されますか?
デニス

1
@Fatalize出力を変更しない場合は問題ありませんが、出力静的でなければなりません。
ウィートウィザード

回答:


12

Brain-Flak、231バイトがWheat Wizardでクラック

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

元のプログラムは-A引数を使用します。

カウントは次のとおりです。

( -> 74
) -> 74
{ -> 34
} -> 34
[ -> 7
] -> 7



4

Haskell、107バイト、nimiによるクラック

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

追加の末尾改行があります。


元のソリューション:


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

オンラインでお試しください!

私の主なアイデアは、ライブラリsort関数を使用せずに出力する前に独自のソースコードをソートするクインを書くことでした。nimiによる最初のクラッキング試行の後、プログラムコードを手動でソートし、プログラムにハードコーディングし、各文字を2倍にして印刷することができました。ただし、使用可能な文字が限られているため、このアプローチは面倒であり、nimiの成功したクラックは元のプログラムと非常に似ています。

説明:

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

@nimiはい、それは完全なプログラムです。これは、クインの標準ルールではありませんか?
ライコニ

わからない。それが機能する前に、私たちにはクインがありました。また、完全なプログラムが標準であっても、チャレンジの「プログラム」はデフォルトを上書きし、機能を許可するものと解釈される可能性があります
nimi

@nimi以前のバージョンが誤解を招いていたのが残念です。私はあなたの最初の試みを見て、それが仕様に従って有効でないことに気付く前にそれを書きました。私もそれを公開し、改訂履歴でわかるように、誰もそれを見なかったという希望ですぐにロールバックしました。修正されたバージョンを見た後、説明がこれ以上当てはまらないことを考慮せずに、このバージョンにロールバックしました。
ライコニ

あなたが私の答えを参照しているかどうかわからなかったので、コメントを削除しました。(置き換える事前ソート文字列を使用することが実際に可能である;NLで):i[]d=[d,d];main=print$i[]=<<"$$ ... |||"--以降のすべての文字の欠落します--。このバージョンは、強盗スレッドからの回答と、変更された説明で回答を明らかにした後に見つけました。
nimi

4

未指定の言語、124バイト、

DJMcMayhemの答えのテーマでは、これは、0x00それぞれ4回印刷された最初の32 ASCII文字(を除く)です。これらはいずれも表示されないため、実際のコードを回答に含めていません。

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            ............

ただし、必要に応じてそれを印刷するPython(および改行)を次に示します。

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

4

Pyth、32バイト、math_junkieによりクラック

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

元のソリューション

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

オンラインでお試しください!

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



4

V、21バイト(安全!)


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

先頭の改行に注意してください。

これには印刷できないものが含まれているため、hexdumpを次に示します。

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

一部の人々を支援するために、ここに標準の拡張可能なVクインへのリンクがあります


元のバージョンは次のとおりです。

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

オンラインでお試しください!

読み取り可能なバージョンは次のとおりです。

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

これが機能する方法は、デフォルトの拡張可能なクインにソートを埋め込むことです。この答えのためにV-quinesについて考えていたとき、標準の拡張可能なクインは3バイトで短縮できることに気づいたので、この解決策は次のようになりました。

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

説明:

ñ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

1
新鮮な正規表現の匂いを嗅ぐ
Kritixi Lithos

3

指定されていない言語、@ Dennisによる 254バイトのクラック!

私はこれが簡潔さのために勝つことを疑いますが、それはクラックするのが苦痛になるので、まだ作る価値があります。

バグのため、順序が0x0b, 0x0c, 0x0a少し混同されていますが、これは間違いなく実際の出力です。

私はこれがどのような異なる言語で可能かを見るために言語を指定しないと思った。出力はほとんど非ASCIIであるので、出力のhexdumpはここにある:

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       ..............

それは、TIOで奇妙な動作を引き起こしたことを除いて0x00、すべてのASCII文字0x0Dです。クラッキングをお楽しみください!>:D


元のコードはVでした。

オンラインで試す

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..

基本的Sには、バッファにゴミを挿入するだけです。0xEE冒頭には、改行がループまたはマクロの一部では発生しませんした後だけで、すべてを保証するためです。それから

¬<C-a>   "Insert every character in the range 0x01-0xFF



2

PHP、130バイト(安全)

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

オリジナルソリューション

私はそれが割れていなかったことを理解できませんでした

<?php $v=str_split(str_repeat('<?php\ $v=str_split(str_repeat(\'\',2));sort($v);echo\ implode($v);',2));sort($v);echo implode($v);

0

推測、43バイト

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

言語を共有するかどうかは大変でしたが、このオプションの方が良いと思います。末尾に改行があることに注意してください。


1
答えは、意図した解決策を答えに追加した場合にのみ安全です。それまでは、この答えは安全ではありません。
mbomb007
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.