Riffle baraja una cuerda - Policías


8

Puesto de ladrones

Una combinación aleatoria es una forma de barajar cartas donde el mazo se divide en 2 secciones aproximadamente iguales y las secciones se agrupan en pequeños grupos. Así es como se baraja una secuencia aleatoria:

  • Divide la cuerda en secciones iguales.
  • Invierta las cadenas y comience desde el principio de cada cadena.
  • Coloque series de una longitud aleatoria uniforme entre 1 y el número de caracteres que quedan en la cadena actual en la cadena final
  • Luego, elimine estos caracteres de la cadena.
  • Repita para la otra mitad, hasta que ambas mitades estén vacías.

Un ejemplo

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

El producto final de Hello World!podría ser o!ldlrleoWHy eso es lo que obtendría.

Policías

Su tarea es hacer un programa (o función) que rifle aleatoriamente una cadena. Si la cadena ingresada es de longitud impar, simplemente divídala en dos cadenas de longitud desigual con una longitud relativa de +1y +0( abc => [ab, c] or [a, bc]). Puede tomar la entrada de la manera normal y producir la salida de la manera normal.

Su presentación de policías consistirá en 4 cosas

  • El idioma que usaste
  • La longitud de su programa en bytes.
  • Su programa, revoltijo barajado.
  • Algo más que quieras agregar

Su objetivo es evitar que su código sea descifrado por los ladrones durante 7 días. Después de ese período, su programa está seguro y debe editarlo en su programa original. Su envío aún puede ser descifrado hasta que revele su solución. ¡La solución más corta y segura será la ganadora!



El cambio a uniformemente al azar me convierte en un dragón triste. Me divertí haciendo una entrada usando una distribución Wald (gaussiana inversa). Me encantaría publicarlo.
Draco18s ya no confía en SE

Respuestas:


2

Gelatina, 11 bytes, agrietada

Esta es una versión de golf, por lo que probablemente alguien pueda descifrarla fácilmente haciendo una versión de golf. Probablemente hay algunos enfoques diferentes, pero sospecho que este enfoque será decentemente común con los idiomas de golf.

Ṗ/Œż€X€U2sœ

El hash SHA-384 de mi programa previsto es 86025a659b3c5fc38e943f72b1f26e28e2e751a7118a589073f1d24fa61ff6b02753d6a0f3f0c7fee6555de69fd06a74(usando la codificación UTF-8).



@ fireflame241 buen trabajo +1
HyperNeutrino

2

> <> , 46 bytes

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

Casi no hay ofuscación en el código real, pero sospecho que un lenguaje 2D será lo suficientemente difícil de descifrar de todos modos.

Descargo de responsabilidad: escrito antes de que se especificara que tenía que ser uniformemente aleatorio. Esto no es uniformemente aleatorio, y no estoy seguro de cómo implementar un algoritmo uniformemente aleatorio en> <> para empezar.


1

Python 3, 154 bytes (lista de caracteres -> lista de caracteres) (función) Agrietado

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

Dudo que esto sea demasiado difícil de descifrar, especialmente porque el riffing una vez es bastante ineficaz (puede ver componentes completos del programa en la salida ...). Esto es principalmente solo para que todo funcione. Puede haber algunos espacios en blanco (incluidas las nuevas líneas) que no copié correctamente. El hash SHA-384 de mi solución prevista es 5924530418bf8cd603c25da04ea308b124fdddfc61e7060d78b35e50ead69a7fbde9200b5ee16635cc0ee9df9c954fa1.


@ H.PWiz Python. Vaya, olvidé agregarlo (¡también bytecount, gracias por el recordatorio!)
HyperNeutrino

En teoría, ¿podrías probar con el riffle inverso barajando el código y ejecutándolo con python hasta que funcione?
fəˈnɛtɪk

@ fəˈnɛtɪk Teóricamente eso debería funcionar ... Sin embargo, puede llevar un tiempo: P
HyperNeutrino

@ fəˈnɛtɪk Eso es como intentar resolver el cuestionario del lenguaje de programación con la fuerza bruta TIO. No es divertido hacerlo.
user202729


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

Toma una secuencia de caracteres como entrada y genera una secuencia de caracteres.


1

R , 283 bytes, agrietado

/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

Ahora me doy cuenta de que escribir una respuesta más larga tiene más "series" de caracteres que se conservan, por desgracia.

¡Buena suerte!



@ Mr.Xcoder gracias por la edición
Giuseppe


0

Brainfuck aleatorio , 273 bytes

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

Brainfuck aleatorio es lo mismo que brainfuck normal, pero introduce el ?personaje, que establece la celda actual en un valor aleatorio. Nota divertida; Tenía una versión de esto que solo funcionaba para entradas de menos de 256 caracteres, por razones obvias, pero el código en sí era más largo que eso. Cuando lo cambié para que fuera más largo, resultó ser un byte más corto que el original. ¯ \ _ (ツ) _ / ¯.



0

APL (Dyalog Unicode) , 62 bytes

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

SHA-384 de mi solución prevista: 3209dba6ce8abd880eb0595cc0a334be7e686ca0aa441309b7c5c8d3118d877de2a48cbc6af9ef0299477e3170d1b94a

Esto probablemente sea bastante fácil, especialmente porque la mayoría de las personas en el chat APL me ayudaron a construir esta respuesta.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.