Sua tarefa é criar um script vim ou fornecer uma sequência de pressionamentos de teclas que funcionem em uma única linha de texto com até 140 caracteres ASCII imprimíveis (em qualquer lugar de um arquivo, com o cursor iniciando em qualquer lugar da linha) e inverter todos os espaços. seqüência separada na frase, mantendo as seqüências na mesma ordem.
Por exemplo, a entrada:
roF emos nosaer m'I gnisu a retcarahc-041 timil no siht noitseuq neve hguoht ti t'nseod evlovni .rettiwT RACECAR
deve retornar:
For some reason I'm using a 140-character limit on this question even though it doesn't involve Twitter. RACECAR
O script com o menor número de caracteres ou a sequência de menos pressionamentos de tecla, para alcançar esse resultado, é o vencedor.
Respostas:
282524 pressionamentos de teclasMacro recursiva, suponho que Ctrl- rconta como um toque de tecla.
A parte mais difícil foi garantir que a macro permaneça na mesma linha e não destrua o restante do arquivo.
fonte
cE
vez dect
, se não estivesse finalizando a macro. Mas você pode usar emW
vez def l
salvar 2 traços.cE
faz quando o cursor está no início dea retcarahc-041
? E adivinhe o queW
acontece quando estamos no fim da fila?E
. minúsculase
iria até o traço, o capitalE
iria até o próximo espaço. Eu apenas tentei confirmar.:set ri<Enter>^qqct <C-r>"<Esc>W@qq@q
por 23.E
, eu sei o que faz. Eu estava me referindo quecE<C-r><Esc>
iria transformara retcarahc-041
em140-character a
, AKA seria trocar as palavras.24 pressionamentos de teclas
Eu sei que essa pergunta é muito antiga, mas eu amo vimgolf, então não pude não postar uma resposta em um dos poucos desafios específicos do vim no site. Além disso, esta solução está ligada à Orlp.
Assim como Orlp disse, a parte mais difícil foi garantir que o restante do buffer não fosse modificado. Se não fosse por essa restrição, poderíamos simplesmente:
(19 pressionamentos de tecla), mas precisamos de um pouco mais para mantê-lo seguro para buffer. Isso pressupõe um ambiente unix.
fonte