Estoy seguro de que la mayoría, si no todos, se han encontrado con esto en algún momento:
En busca de una investigación en Cmabrigde Uinervtisy, no se pierde nada en lo que se refiere a las letras en un mundo, lo único que debe saber es la primera y la última letra. El primer conjunto puede ser una tarea completa y usted puede evaluarlo por completo. Tihs es bcuseae the huamn mnid deos, no crió ervey lteter por istlef, sino el mundo como un wlohe.
Cree un programa que ingrese cualquier cantidad de texto. Para fines de prueba, use la versión sin codificar del texto anterior, que se encuentra a continuación.
El programa debe transponer aleatoriamente las letras de cada palabra con una longitud de 4 o más letras, excepto la primera y la última letra de cada palabra.
El resto del formato debe permanecer igual (mayúsculas y puntuación, etc.).
Texto de prueba:
Según un investigador de la Universidad de Cambridge, no importa en qué orden estén las letras de una palabra, lo único importante es que la primera y la última letra estén en el lugar correcto. El resto puede ser un desastre total y aún puede leerlo sin problemas. Esto se debe a que la mente humana no lee todas las letras por sí misma, sino la palabra en su conjunto.
Como de costumbre, este es un código de golf. El código más corto gana.
rscheearch
en su texto de muestra.don't
permanecer en la misma posición? La especificación diceAll other formatting must remain the same (capitalization and punctuation, etc.).
pero no estoy seguro de cómo funciona aquí ...Respuestas:
Ruby -
5048 caracteres, más-p
parámetro de línea de comando.Gracias @primo por -2 char.
Prueba
fuente
\K
con la aserción retrospectiva de ancho cero? Además, la agrupación más interna es innecesaria, utilizando en$&
lugar de$1
.$&
consejo :)codegolf
script[*$&.chars]
=>$&.chars
, ahorrando 3 bytes.Python, 118
¡Python es terriblemente incómodo para cosas como esta!
Prima
Intenté algunas otras cosas que pensé que serían inteligentes, pero tienes que importar todo tipo de cosas, y muchos métodos no tienen valores de retorno, pero deben llamarse por separado como su propia declaración. Lo peor es cuando necesita convertir la cadena en una lista y luego
join
volver a convertirla en una cadena.De todos modos, estas son algunas de las cosas que probé:
Regex! Permutaciones! No puede barajar una partición de una lista directamente yshuffle
regresaNone
, ¡sí!fuente
PHP 84 bytes
Usando una expresión regular para capturar palabras que tienen al menos
43 letras de largo † , y barajando los caracteres internos. Este código también puede manejar la entrada con varias líneas.Si solo se requiere una línea de entrada (como en el ejemplo), esto se puede reducir a 68 bytes
† Solo hay una letra en el medio, por lo que no importa si la barajas.
fuente
J (48)
Explicación:
1!:1[3
: lee todas las entradas de stdinrxapply
: aplica la función dada a las partes de la entrada que coinciden con la expresión regular({~?~@#)
: un tren de verbos que baraja su entrada:#
cuenta la longitud, esto se aplica a ambos lados de?
dar N números distintos de 0 a N,{
luego selecciona los elementos en esos índices de la matriz de entrada.('\w(\w+)\w';,1)
: usa esa expresión regular pero solo usa el valor del primer grupo[1!:2&4
: envía salida sin formato a stdout''[
: suprime la salida formateada. Esto es necesario porque de lo contrario solo genera esa parte de la salida que se ajusta a una línea de terminal y luego termina con...
.fuente
Retina , 10 bytes
Pruébalo en línea!
¡Hola, este viejo desafío se hizo para la nueva Retina!
Explicación
\B\w+\B
hace coincidir grupos de letras entre no límites, es decir, grupos de letras que no comienzan o terminan una palabra. Como las expresiones regulares son codiciosas, esto coincidirá con todas las letras de una palabra, excepto la primera y la última.V
es la etapa "inversa", que invierte el orden de los caracteres en cada coincidencia de la expresión regular. Con la?
opción, los revuelve en su lugar.fuente
APL 107
Lamentablemente, mi intérprete APL no admite expresiones regulares, así que aquí hay una versión casera donde el texto que se va a codificar se almacena en la variable t:
Esencialmente, el código divide el texto en palabras basadas únicamente en las letras del alfabeto y luego en las letras entre la primera y la última letra de esas palabras. Estas letras se mezclan y se vuelve a ensamblar toda la cadena de caracteres.
fuente
APL,
5849Creo que esto funciona en IBM APL2 (no tengo IBM APL)
Si no, entonces en Dyalog APL, agregue al frente:
que agrega 6 caracteres
Esto supone que los únicos caracteres que no son palabras son espacio, coma y punto.
fuente
VBA, 351
373/409Método alternativo (más grande):
Ambos métodos cambian el valor de la variable pasada a
Sub
. es decirgenerará algo como esto:
Además, esto aleatoriza la puntuación de mitad de palabra, por lo que puede no ajustarse al 100% de la especificación.
fuente
APL NARS 172 caracteres
13 + 17 + 18 + 44 + 41 + 8 + 17 + 5 + 9 = 172; Esta función g () tiene entrada como una cadena; tiene salida como una cadena. Agrego el comando de entrada porque no sé cómo insertar \ 'en una cadena entre comillas. Comentado
resultado
fuente
PHP 7.1, no compite, 80 bytes
toma datos de los argumentos de la línea de comandos. Corre con
-nr
. (obviamente fallará en la puntuación)fuente
PHP, 94 + 1 bytes
+1 para
-R
banderaEntrada de tubería a través
php -nR '<code>'
.Nota:
preg_replace_callback
llegó a PHP en 4.0.5; los cierres se introdujeron en php 5.3;entonces esto requiere PHP 5.3 o posterior.
Desafortunadamente, la coincidencia siempre se envía como una matriz, incluso si no hay subpatrones,
por lo tanto , no puedo usarla
str_shuffle
como devolución de llamada, lo que ahorraría 29 bytes.fuente
JavaScript,
7667 bytesGracias a Arnauld por -9 bytes.
Pruébalo en línea!
Sin golf
fuente
/\B\w+\B/g
. (Pero para la recompensa, tenga en cuenta que la longitud del código no es importante. )R, 179
Usando la función que escribí para aleatorizar letras en un problema de palabras :
Entrada:
Solución:
Resultado:
fuente
Pyth, 23 bytes
No compite porque Pyth se creó después de que se publicó este desafío.
Pruébalo en línea
fuente
Japt , 32 bytes
Pruébalo en línea!
fuente
Java,
1557834 bytes Gracias a @JoKing por sus consejos.Un poco tarde para la competencia. Olvidé que había comenzado con este problema.
Golfed
No golf
fuente
Sidef ,
8985 bytesBloque (invocable anónimo):
Salida, cuando se usa como
{ ... }('..')
:Algo no golfista
fuente