Su tarea es crear un script vim o proporcionar una secuencia de pulsaciones de teclas que opere en una sola línea de texto con hasta 140 caracteres ASCII imprimibles (en cualquier parte de un archivo, con el cursor comenzando en cualquier lugar de la línea) e invierta cada espacio. cadena separada en la oración manteniendo las cadenas en el mismo orden.
Por ejemplo, la entrada:
roF emos nosaer m'I gnisu a retcarahc-041 timil no siht noitseuq neve hguoht ti t'nseod evlovni .rettiwT RACECAR
debería volver:
For some reason I'm using a 140-character limit on this question even though it doesn't involve Twitter. RACECAR
El guión con la menor cantidad de caracteres, o la secuencia de la menor cantidad de pulsaciones de teclas, para lograr este resultado es el ganador.
Respuestas:
282524 pulsaciones de teclasMacro recursiva, supongo que Ctrl- rcuenta como un golpe de teclado.
La parte más difícil fue asegurarse de que la macro permanezca en la misma línea y no destruya el resto del archivo.
fuente
cE
lugar dect
, si no estaba terminando la macro. Pero puede usar enW
lugar def l
guardar 2 golpes.cE
hace cuando el cursor está al principio dea retcarahc-041
? ¿Y adivina quéW
hace cuando estamos al final de la línea?E
. las minúsculase
irían hasta el guión, las mayúsculasE
irían hasta el siguiente espacio. Solo lo intenté para confirmar.:set ri<Enter>^qqct <C-r>"<Esc>W@qq@q
por 23.E
, sé lo que hace. Me refería a quecE<C-r><Esc>
se convertiríaa retcarahc-041
en140-character a
AKA, que cambiaría las palabras.24 pulsaciones de teclas
Sé que esta pregunta es muy antiguo, pero amo vimgolf así que no podía no publicar una respuesta en uno de los pocos retos vim-específicas en el sitio. Además, esta solución está vinculada con Orlp's.
Al igual que Orlp dijo, la parte más difícil fue asegurarse de que el resto del búfer no se modificara. Si no fuera por esa restricción, simplemente podríamos hacer:
(19 pulsaciones de teclas) pero necesitamos un poco más para mantenerlo a salvo de búfer. Esto supone un entorno unix.
fuente