Riffle embaralhar uma corda - Policiais


8

Post de ladrões

Um baralhamento riffle é uma maneira de baralhar cartas, onde o baralho é dividido em duas seções aproximadamente iguais e as seções são divididas entre si em pequenos grupos. É assim que você embaralha uma seqüência aleatória:

  • Divida a sequência em seções iguais.
  • Inverta as strings e inicie do início de cada string.
  • Coloque execuções de um comprimento uniformemente aleatório entre 1 e o número de caracteres restantes na cadeia atual na cadeia final
  • Em seguida, remova esses caracteres da string.
  • Repita o procedimento para a outra metade, até que as duas metades estejam vazias.

Um exemplo

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

O produto final de Hello World!poderia ser o!ldlrleoWHe é isso que você produziria.

Policiais

Sua tarefa é criar um programa (ou função) que reproduza aleatoriamente uma sequência aleatória. Se a string inserida tiver um comprimento ímpar, apenas divida-a em duas cadeias de comprimento irregular com um comprimento relativo de +1e +0( abc => [ab, c] or [a, bc]). Você pode receber entrada da maneira normal e produzir saída da maneira normal.

Seu envio de policiais consistirá em 4 itens

  • O idioma que você usou
  • O comprimento do seu programa em bytes
  • Seu programa, riffle embaralhado.
  • Qualquer outra coisa que você queira adicionar

Seu objetivo é impedir que seu código seja decifrado pelos ladrões por 7 dias. Após esse período, seu programa está seguro e você deve editar no seu programa original. Seu envio ainda pode estar quebrado até você revelar sua solução. A solução mais curta e segura será a vencedora!



A mudança para uniformemente aleatória me faz um dragão triste. Eu me diverti fazendo uma entrada usando uma distribuição Wald (gaussiana inversa). Eu adoraria publicá-lo.
Draco18s não confia mais no SE 11/01

Respostas:


2

Geléia, 11 bytes, Rachado

Esta é uma versão para golfe, para que alguém possa decifrá-la facilmente, apenas criando uma versão para golfe. Provavelmente existem algumas abordagens diferentes, mas suspeito que essa abordagem será decentemente comum em idiomas de golfe.

Ṗ/Œż€X€U2sœ

O hash SHA-384 do meu programa pretendido é 86025a659b3c5fc38e943f72b1f26e28e2e751a7118a589073f1d24fa61ff6b02753d6a0f3f0c7fee6555de69fd06a74(usando a codificação UTF-8).



@ fireflame241 bom trabalho +1
HyperNeutrino 01/01

2

> <> , 46 bytes

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

Quase não há ofuscação no código real, mas suspeito que uma linguagem 2D seja suficientemente difícil de decifrar.

Disclaimer: Escrito antes de ser especificado que tinha que ser uniformemente aleatório. Isso não é uniformemente aleatório, e não tenho certeza de como eu implementaria um algoritmo uniformemente aleatório em> <> para começar.


1

Python 3, 154 bytes (lista de caracteres -> lista de caracteres) (função) 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

Duvido que isso seja muito difícil de decifrar, especialmente porque o riffling já é bastante ineficaz (você pode ver componentes inteiros do programa na saída ...). Isto é principalmente apenas para fazer as coisas rolarem. Pode haver algum espaço em branco (incluindo novas linhas) que eu não copiei corretamente. O hash SHA-384 da minha solução pretendida é 5924530418bf8cd603c25da04ea308b124fdddfc61e7060d78b35e50ead69a7fbde9200b5ee16635cc0ee9df9c954fa1.


@ H.PWiz Python. Ops, esqueci de adicioná-lo em (também bytecount, obrigado pela lembrança!)
HyperNeutrino

Em teoria, você poderia tentar riffle reverso embaralhar o código e executá-lo com python até que funcione?
f Jannɛtɪk

@ fənɛtɪk Teoricamente que deve funcionar ... Pode demorar um tempo, porém: P
HyperNeutrino

@ fəˈnɛtɪk É como tentar resolver o teste da linguagem de programação com força bruta do TIO. Não há graça em fazê-lo.
precisa saber é o seguinte


1

Röda , 118 bytes

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

Ele recebe um fluxo de caracteres como entrada e gera um fluxo de caracteres.


1

R , 283 bytes, Rachado

/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

Agora percebo que escrever uma resposta mais longa tem mais "execuções" de caracteres preservados, infelizmente.

Boa sorte!



@ Mr.Xcoder obrigado pela edição
Giuseppe


0

Brainfuck aleatório , 273 bytes

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

Foda cerebral aleatória é a mesma que uma foda cerebral normal, mas apresenta o ?caractere, que define a célula atual para um valor aleatório. Nota divertida; Eu tinha uma versão disso que funcionava apenas para entradas com menos de 256 caracteres, por razões óbvias, mas o código em si era mais longo que isso. Quando mudei para um tamanho maior, ele ficou um byte menor que o original. ¯ \ _ (ツ) _ / ¯.



0

APL (Dyalog Unicode) , 62 bytes

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

SHA-384 da minha solução pretendida: 3209dba6ce8abd880eb0595cc0a334be7e686ca0aa441309b7c5c8d3118d877de2a48cbc6af9ef0299477e3170d1b94a

Provavelmente isso é fácil, principalmente porque a maioria das pessoas no chat da APL me ajudou a criar essa resposta.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.