ストリングをシャッフルする-警官


8

強盗の投稿

リフルシャッフルは、デッキ2つのおおよそ等しいセクションに分割され、切片を小グループでお互いにriffledされているカードをシャッフルする方法です。これは文字列をシャッフルする方法です:

  • 文字列を等しいセクションに分割します。
  • 文字列を逆にし、各文字列の先頭から始めます。
  • 1から現在の文字列に残っている文字数までのランダムな長さのランを最終的な文字列に入れます
  • 次に、これらの文字を文字列から削除します。
  • 残りの半分について、両方の半分が空になるまで繰り返します。

"Hello World!"      Output string = ""
"Hello ", "World!"  ""
"Hell", "World!"    " o"
"Hell", "World"     " o!"
"Hel", "World"      " o!l"
"Hel", "Wo"         " o!ldlr"
"H", "Wo"           " o!ldlrle"
"H", ""             " o!ldlrleoW"
"", ""              " o!ldlrleoWH"

からの最終製品はHello World!可能性がo!ldlrleoWHあり、それが出力されます。

警官

あなたの仕事は、文字列をシャッフルするプログラム(または関数)を作成することです。入力された文字列が奇数長である場合は、それを+1+0abc => [ab, c] or [a, bc])の相対長で2つの不均一な長さの文字列に分割します。通常の方法で入力を取り、通常の方法で出力を生成できます。

あなたの警官の提出は4つのもので構成されます

  • 使用した言語
  • プログラムの長さ(バイト単位)
  • あなたのプログラムは、シャッフルしました。
  • 他に追加したいもの

あなたは、コードが7日間、強盗によって解読されないようにすることを目指しています。その期間が過ぎると、プログラムは安全になり、元のプログラムで編集する必要があります。あなたの解決策が明らかになるまで、あなたの提出物はまだ解読されているかもしれません。最短で安全なソリューションが勝者になります!



一様にランダムに変更すると、私は悲しいドラゴンになります。Wald分布(逆ガウス分布)を使用してエントリを作成するのを楽しんだ。投稿したいです。
Draco18sは、

回答:


2

ゼリー、11バイト、クラック

これはゴルフ版なので、ゴルフ版を作るだけで簡単にクラックできます。おそらくいくつかの異なるアプローチがありますが、私はこのアプローチがゴルフ言語でまともに一般的であると思います。

Ṗ/Œż€X€U2sœ

私の目的のプログラムのSHA-384ハッシュは86025a659b3c5fc38e943f72b1f26e28e2e751a7118a589073f1d24fa61ff6b02753d6a0f3f0c7fee6555de69fd06a74(UTF-8エンコーディングを使用)です。




2

> <>、46バイト

 }lr]l:l~\r[-r}x>o?
<!l>x![; ?=\?(0:2i
:,2-%2:

実際のコードには難読化はほとんどありませんが、2D言語はとにかく解読するのが難しいと思います。

免責事項:均一にランダムでなければならないことが明記される前に書かれました。これは一様にランダムではありません。そもそも、<<>で一様にランダムなアルゴリズムをどのように実装するかさえわかりません。


1

Python 3、154バイト(文字のリスト->文字のリスト)(関数)クラック

[=o;]1-::[]:s[i,]1-::[]s:[i=R,L;2//)i(nel=s    
:)i(r fed
*tropmi modR+L+o nruter    
]:s[L,R=R,L;]s:[L=+o;))L(nel,1(tnidnar=s:R dna L elihw    
]nar morf

私はこれがクラックするのが難しすぎると思います。特に、一度リフリングするのはかなり効果的でないためです(出力でプログラムコンポーネント全体を見ることができます...)。これは主に物事を転がすためのものです。正しくコピーしなかった空白(改行を含む)があるかもしれません。私の意図したソリューションのSHA-384ハッシュは 5924530418bf8cd603c25da04ea308b124fdddfc61e7060d78b35e50ead69a7fbde9200b5ee16635cc0ee9df9c954fa1です。


@ H.PWiz Python。おっと、追加するのを忘れました(バイトカウント、リマインダーに感謝!)
HyperNeutrino 2018年

理論的には、コードを逆方向にシャッフルし、それが機能するまでpythonで実行してみませんか?
fəˈnɛtɪk 2018年

@ fəˈnɛtɪk理論的には動作するはずです...少し時間がかかるかもしれませんが:P
HyperNeutrino

@ fəˈnɛtɪkこれは、プログラミング言語のクイズをTIOのブルートフォースで解いてみるようなものです。それをするのは面白くない。
user202729 2018年


1

ローダ、118バイト

2//x#=z}][=]:y[x
}]0>)b..a(#[]1-::[]:y[x
x#%)(reelihw}]0>b#[fi)b(g
getnI]0>a#[fi)a(g{]mo:z[x=b]zdnar=y|x|{=:[g{xx=a
 f

入力として文字のストリームを取り、文字のストリームを出力します。


1

R、283バイト、クラック

/n,s(daeh-<l
))'',s(tilpsrts(le::sdohtem-<s
)s(rahcn-<n{)s(noitcnufhtgnel(fi
})x-,l(liat-<l
)))x,l(daeh(ver,o(c-<o
)1,)l(htgnel(elihw
}{-<o
)2/n,s(liat-<r
)2'=pes,o(tac
}})y-,r(liat-<r
)))y,r(daeh(ver,o(c-<o
)1,)r(htgnel(elpmas-<y{))r(l(fi{))r(htgnel|)l(htgnel()'htgne}(lpmas-<x{))le

長い回答を書くと、悲しいかな、保持される文字の「ラン」が増えることに気づきました。

幸運を!



@ Mr.Xcoderの編集に感謝
ジュゼッペ

0

Pyth、14バイト、クラック

_Qm/dc2iF.jk.O

水をテストするためのかなり標準的な問題のPyth実装。かなり簡単に解読できるかもしれませんが、それがどのように進むかを見ていきます。



0

ランダムブレインファック、273バイト

]<.[<<]<[<<]<[<]<,.[<]-<<<]>>>>>]<+>-[<]<+>-[<<]>]>+<]<]>[>>]]>[>>]<]<+>-[[<<]>]>[>>]<-[[[>>]]>[>]<+>-[[<]<[[?>>]<+>-[[<]-<]>]<[>>]<<+>>+>-[[<<,[>]<.[<]>[>]<+>-[<]>[>]->>>]<<<<<]>+-[<<-[>]>+<-[>>]<]<+>-[[[<<]]<[<]>+<-[[><]<[[>]<+>-[>],]<+>-[<]<->>+]>[[<-[<?<<+>>>[,]>+<-[[>

ランダムなブレインファックは通常のブレインファックと同じですが、?現在のセルをランダムな値に設定するキャラクターを導入します。楽しいメモ。明らかな理由により、256文字未満の入力に対してのみ機能するバージョンがありましたが、コード自体はそれよりも長くなりました。処理時間を長くするように変更すると、元のバイトより1バイト短いことがわかりました。¯\ _(ツ)_ /¯。



0

APL(Dyalog Unicode)、62バイト

(g÷f¨()⍵(≢~⊃⍵⍺⍉⍨⍨}(←(←'')⊂f≢(g∘⌈¨}{?↑-⍵↑⋄)≢)))≢⊂{,⋄⍵⍵↑2f≢∘⊃?()

私の意図したソリューションのSHA-384: 3209dba6ce8abd880eb0595cc0a334be7e686ca0aa441309b7c5c8d3118d877de2a48cbc6af9ef0299477e3170d1b94a

これはおそらく十分簡単です。特に、APLチャットのほとんどの人が私がこの回答を作成するのを助けてくれたためです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.