一意性からリバースエンジニアリング(強盗のスレッド)


11

警官のプログラム(o)、バイトカウント(n)およびc使用された一意のバイト数()の出力が与えられると、警官の出力に一致する一意のバイトをn持つバイト長の対応するコードをc見つけますo


これは強盗スレッドです。ここでクラックしたソリューションを投稿してください。

COPSスレッドはここにあります


強盗は次のような解決策を投稿する必要があります。

#[Language], `n` Bytes, `c` Unique Bytes (Cracked)[Original Link to Cop Thread]

    [Solution]

(Explanation)

ルール

  • プログラムに入力を行うことはできません。
  • プログラムは少なくとも1バイトを使用する必要がありますが、255バイトを超えることはできません。
  • 出力自体も255バイトに制限されています。
  • プログラムを複数回実行する場合、出力結果に一貫性が必要です。
  • 提出物が7日以内にクラックされない場合、「安全」とマークすることができます。
    • 安全とマークする場合は、目的のソリューションを投稿し、としてスコア付けしてくださいc*n

勝ち

  • c*nスコアが最低の割れていない投稿が、警官のスレッドに勝ちます。
  • 最もひびが入った人は誰でも強盗スレッドに勝ち、最も早いひびはタイを壊します。
  • これは、10の安全な答え、または数週間後に決定されます。

注意事項

  • あなたが生意気に感じたら、ネタばれタグを使用してユーザーにアルゴリズムを伝えることができます。

注:また、クラックに賛成票を投じることを忘れないでください。それらは通常、印象的な部分です。

回答:



4

MATL、4バイト、4つの一意のバイト、Stewie Griffin

1X2p

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

説明

1X2   % Push predefined literal: string 'double'
p     % Product of array. For strings it uses code points. Implicit display

すべての定義済みリテラルを知っています...私はしません...それは私が持っていたものとまったく同じではありませんでしたが、もちろんの製品でした'double'。:)
スティーヴィーグリフィン

@StewieGriffinああ、なるほど1X%p。実際には、いくつかの事前定義されたリテラルのみを知っています。私はブルート強制9:"@X1pD変更するX1
ルイス・Mendo

4

MATL、6バイト、3ユニーク、ルイスメンドー

FFFTZF

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

すぐに出力を認識しました

1+0i 0+1i -1+0i 0-1i

統一の4番目のルーツとして、そしてこれが結果fft[0 0 0 1]なることを知っていました。

それがFFFTプッシュされることを理解するのにかなり時間がかかりましたが、それが[0 0 0 1]どのように機能するのかまだわかりません。EDIT:ルイス・Mendoはそれを説明Fし、T一連のため、「粘着性」あるFT自動的にhorzcatそれらを一緒に、それゆえ、FFFTプッシュ[0 0 0 1]

これは、ドキュメントで簡潔に表現されています(一度調べてみました):

論理行ベクトルの場合、角括弧は省略できます。つまり、表記法 [T F T]または[TFT]に簡略化できますTFT。新しい論理配列が続く場合、セパレータが必要になる場合がありますTFT TT。ただし、他の場合には必要ありませんTFT3.5


1
FそしてT「粘着性」です。そうFFT行ベクトルが定義[false, false, true]
ルイスMendo

@LuisMendoありがとう、それは今明らかです。
ジュゼッペ

4

Haskell、29バイト、15ユニーク、Laikoni

f<$>[1..74]
f 47='4'
f f1='3'

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

以前は、2つのほぼ解決策がありました。

do;d<-[2..74];'3':['4'|d==47]    -- 29,16
do;d<-[-41..31];'3':['4'|d==4]   -- 30,15

ああ、ライコニのコメントから、答えは単一の表現である必要があると思うようになりました。最も近いのは["34"!!(0^x^2)|x<-[-46..27]](28、18 )でした。
リン

1
また、doその直後にセミコロンを配置できるとは思いませんでした!
リン

1
はい、有効であると推測する前に、長い間そこにスペースがありました。
H.PWiz

@Lynn Laikoniは、解決策チャットでの単一の表現であると主張しています
-H.PWiz


3

JavaScript(ES6)、ブライアンH.

最後の最後の '5'を修正してくれた@Milkに感謝

f=f=>1/44.4

console.log(f())

ユニークな文字:./14=>f


1
これは最後に余分な5を出力します_=_=>1/44.4
ミルク

@milkそれは確かに良く見えます。投稿したい場合はお知らせください。削除します。
アーナルド

それはクールです。必要に応じて投稿を更新できます。私はあなたのひび割れからこれを取得しました。
ミルク

簡単だと言った:p
ブライアンH.

3

Wolfram言語(Mathematica)、8バイト、3ユニーク、Jenny_mathy

7!!!/77!

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

内訳:Factorial[7!!] / Factorial[77]どこ!!が二重階乗です。

最初に0、最後にの長いシーケンスに気づくので、何らかの階乗の可能性があります。FactorIntegerは最大の因子を与える103ため、試してみてn/103!、次に大きい(負の)素因数を取得し73ます。しばらくの間、要因を微調整する105!/77!と、「すでに3つのシンボル7!および/があるため、105を作成する方法はそれらのシンボルからでなければなりません!」と思います。そこで試してみて7!!(試してみるべきいくつかのことの1つ)、正しい結果として105を取得しました。




2

Jelly、7バイト、6ユニーク、Erik the Outgolfer

-何らかの理由で、結果の末尾のゼロから始めました。それがなければ、私は
8,16!PP
解決策として与えていただろう。


8,⁴!PP0

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

どうやって?

8,⁴!PP0 - Main link of a program taking no arguments and no input
  ⁴     - literal sixteen
8       - literal eight
 ,      - pair = [8,16]
   !    - factorial (vectorises) = [8!, 16!] = [40320, 20922789888000]
    P   - product = 40320 × 20922789888000 = 843606888284160000
     P  - product (no effect) = 843606888284160000
      0 - literal zero (just gets printed)
        - leaving STDOUT displaying 8436068882841600000, as required

... 8,⁴!’P6バイトの場合、843585965494231681 40319×2092278988799)の結果はそれほど階乗ベースに見えないため、6個のユニークはクラックするのがはるかに困難でした。


代替:(8µḤ!×! 末尾スペース付き)
-user202729

または8,⁴!P、末尾に2つのスペースがある(またはq、その他の未実装バイト)
ジョナサンアラン


2

PowerShell、7バイト、5つの一意のバイト、AdmBorkBork

1PB#---

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

出力は、1125899906842624に等しく、2^50且つ2^50 Bytesに等しいです1 Pebibyte。実際のコードはわずか3バイトなので、最後にコメントを追加しました。


いいね 私はコメントを付け加えるとループを投げかけると思っていましたが、間違っていたようです。:)
AdmBorkBork

2

Excel、22バイト、16の一意のバイト、EngineerToast

可能な解決策は次のとおりです。

=BAHTTEXT(2^(480-300))

一意の文字は=BAHTEX()^02348-です。

出力を表示するときにBAHTTEXTが使用されていることを認識しました。出力をタイ語から英語に翻訳することで、数値の値を見つけることができました。私はそれが2の累乗であると推測しましたが、実際にはそれです(つまり2 180)。次に、480-300 = 180という式が構築され、ソリューションに16個の一意の22バイトが含まれるようになりました。


2

アリス、9バイト、8個の一意のバイト、レオ

/Yr@
\no/

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

展開、これはnrYo@です。

n  negate the implicit empty string: creates the string "Jabberwocky".
r  range expansion: produces a string that starts with J, 
   goes up in ASCII order to w, down to c, and then up to y.
Y  separate this string into even and odd positions
o  output the even positions
@  terminate

ちなみに、最初の列のミラーの向きは完全に無関係であるため、これを簡単に7つの固有のバイトに減らすことができます。


あなたは鏡について正しいです!私はアリスでさびすぎました:)
レオ


1

J、8バイト、6一意のバイト、Bolce Bussiere

;p.p:i.9

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

出力:

23 _0.677447j0.296961 _0.677447j_0.296961 0.125003j0.726137 0.125003j_0.726137 _0.379097j0.630438 _0.379097j_0.630438 0.518498j0.521654 0.518498j_0.521654

明らかなヒントは、与えられた出力では、複素数は常に共役ペアとして現れるということです。p.単純な多項式と乗数と根の形式を変換する動詞が疑われました。

だから私は試しました:

p. 23;(...those complex numbers)
   2 3 5 7.00001 11 13 17 19 23

はい、私の考えは正しかった。素数のリストは簡単です。モナ;ディックは、ボックス化された配列のリストを単純な線形配列に平坦化します。結果の式には2つのpと2つのドットがあるため、バイトカウントは完璧です。



0

Jelly、8 バイト、6ユニーク、Mr。Xcoder

7x7²¤ḌḤ²

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

どうやって?

7x7²¤ḌḤ² - Main link: no arguments & no input
7        - literal 7
    ¤    - nilad followed by link(s) as a nilad:
  7      -   literal 7
   ²     -   square -> 49
 x       - repeat elements -> [7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7]
     Ḍ   - convert from a decimal list -> 7777777777777777777777777777777777777777777777777
      Ḥ  - double -> 15555555555555555555555555555555555555555555555554
       ² - square -> 241975308641975308641975308641975308641975308641926913580246913580246913580246913580246913580246916
         - implicit print
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.