Riffle xáo trộn một chuỗi - Cảnh sát


8

Cướp bài

Một ngẫu nhiên vơ vét là một cách để thẻ xáo trộn nơi boong tàu được chia thành 2 phần tương đương và các bộ phận được nối lồng vào nhau thành từng nhóm nhỏ. Đây là cách xáo trộn xáo trộn một chuỗi:

  • Chia chuỗi thành các phần bằng nhau.
  • Đảo ngược các chuỗi và bắt đầu từ đầu của mỗi chuỗi.
  • Đặt các bước chạy có độ dài ngẫu nhiên đồng đều giữa 1 và số ký tự còn lại trong chuỗi hiện tại vào chuỗi cuối cùng
  • Sau đó loại bỏ các ký tự này khỏi chuỗi.
  • Lặp lại cho nửa kia, cho đến khi cả hai nửa trống.

Một ví dụ

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

Sản phẩm cuối cùng Hello World!có thể là o!ldlrleoWHvà đó là những gì bạn sẽ xuất ra.

Cảnh sát

Nhiệm vụ của bạn là tạo ra một chương trình (hoặc hàm) sẽ xáo trộn xáo trộn một chuỗi. Nếu chuỗi nhập vào có độ dài lẻ, chỉ cần chia chuỗi thành hai chuỗi có độ dài không đồng đều với độ dài tương đối +1+0( abc => [ab, c] or [a, bc]). Bạn có thể lấy đầu vào theo cách thông thường và sản xuất đầu ra theo cách thông thường.

Trình Cops của bạn sẽ bao gồm 4 điều

  • Ngôn ngữ bạn đã sử dụng
  • Độ dài chương trình của bạn tính bằng byte
  • Chương trình của bạn, riffle xáo trộn.
  • Bạn muốn thêm gì vào nữa không

Bạn đang cố gắng giữ cho mã của mình không bị Cướp bóc trong 7 ngày. Sau khoảng thời gian đó, chương trình của bạn an toàn và bạn nên chỉnh sửa trong chương trình gốc của mình. Trình của bạn vẫn có thể bị bẻ khóa cho đến khi bạn tiết lộ giải pháp của mình. Giải pháp ngắn nhất, an toàn sẽ là người chiến thắng!



Sự thay đổi để thống nhất ngẫu nhiên làm cho tôi một con rồng buồn. Tôi đã rất vui khi thực hiện một mục bằng cách sử dụng Phân phối Wald (nghịch đảo gaussian). Tôi muốn đăng nó.
Draco18 không còn tin tưởng SE

Câu trả lời:


2

Thạch, 11 byte, Cracked

Đây là một phiên bản golf, vì vậy ai đó có thể dễ dàng bẻ khóa nó chỉ bằng cách tạo ra một phiên bản golf. Có thể có một vài cách tiếp cận khác nhau nhưng tôi nghi ngờ cách tiếp cận này sẽ phổ biến với các ngôn ngữ chơi gôn.

Ṗ/Œż€X€U2sœ

Hàm băm SHA-384 của chương trình dự định của tôi là 86025a659b3c5fc38e943f72b1f26e28e2e751a7118a589073f1d24fa61ff6b02753d6a0f3f0c7fee6555de69fd06a74(sử dụng mã hóa UTF-8).




2

> <> , 46 byte

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

Hầu như không có sự xáo trộn nào trong mã thực, nhưng tôi nghi ngờ một ngôn ngữ 2D sẽ đủ khó để bẻ khóa.

Tuyên bố miễn trừ trách nhiệm: Được viết trước khi được chỉ định rằng nó phải ngẫu nhiên thống nhất. Đây không phải là ngẫu nhiên thống nhất và tôi không chắc chắn cách tôi thậm chí thực hiện thuật toán ngẫu nhiên thống nhất trong> <> để bắt đầu.


1

Python 3, 154 byte (danh sách ký tự -> danh sách ký tự) (hàm) Cracked

[=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

Tôi nghi ngờ điều này sẽ quá khó để bẻ khóa, đặc biệt là vì việc riff một lần là không hiệu quả (bạn có thể thấy toàn bộ các thành phần chương trình trong đầu ra ...). Điều này chủ yếu chỉ để có được mọi thứ lăn. Có thể có một số khoảng trắng (bao gồm cả dòng mới) mà tôi đã không sao chép chính xác. Băm SHA-384 của giải pháp dự định của tôi là 5924530418bf8cd603c25da04ea308b124fdddfc61e7060d78b35e50ead69a7fbde9200b5ee16635cc0ee9df9c954fa1.


@ H.PWiz Python. Rất tiếc, đã quên thêm nó vào (cũng là bytecount, cảm ơn vì đã nhắc nhở!)
HyperNeutrino

Về lý thuyết, bạn có thể thử riffle đảo ngược mã và thực thi nó với python cho đến khi nó hoạt động không?
fnɛtɪk

@ fəˈnɛtɪk Về mặt lý thuyết sẽ hoạt động ... Có thể bạn sẽ mất một lúc: P
HyperNeutrino

@ fəˈnɛtɪk Điều đó giống như thử giải bài kiểm tra ngôn ngữ lập trình với lực lượng vũ phu TIO. Không có niềm vui trong việc làm điều đó.
dùng202729


1

Röda , 118 byte

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

Nó nhận một luồng các ký tự làm đầu vào và xuất ra một luồng các ký tự.


1

R , 283 byte, Cracked

/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

Bây giờ tôi nhận ra rằng viết một câu trả lời dài hơn có nhiều "bước chạy" của các ký tự được bảo tồn, than ôi.

Chúc may mắn!



@ Mr.Xcoder cảm ơn bạn đã chỉnh sửa
Giuseppe

0

Pyth , 14 byte, Cracked

_Qm/dc2iF.jk.O

Khá thực hiện vấn đề Pyth để kiểm tra vùng biển. Có thể khá dễ để bẻ khóa, nhưng tôi đoán chúng ta sẽ thấy giá vé như thế nào.



0

Brainfuck ngẫu nhiên , 273 byte

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

Brainfuck ngẫu nhiên giống như brainfuck bình thường, nhưng nó giới thiệu ?nhân vật, đặt ô hiện tại thành một giá trị ngẫu nhiên. Ghi chú vui vẻ; Tôi đã có một phiên bản này chỉ hoạt động cho đầu vào dưới 256 ký tự, vì những lý do rõ ràng, nhưng bản thân mã dài hơn thế. Khi tôi thay đổi nó để xử lý lâu hơn, hóa ra nó ngắn hơn một byte so với ban đầu. ¯ \ _ (ツ) _ / ¯.



0

APL (Dyalog Unicode) , 62 byte

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

SHA-384 trong giải pháp dự định của tôi: 3209dba6ce8abd880eb0595cc0a334be7e686ca0aa441309b7c5c8d3118d877de2a48cbc6af9ef0299477e3170d1b94a

Điều này có lẽ là đủ dễ dàng, đặc biệt là vì hầu hết những người trong cuộc trò chuyện APL đã giúp tôi xây dựng câu trả lời này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.