Estou com um problema no teclado (provavelmente no meu navegador). Algumas vezes, quando clico em um novo campo de texto e começo a digitar todo o meu texto sai para trás. Após um período muito curto (para o objetivo do desafio, diremos que são 10 milissegundos), ele retoma a digitação novamente. Parece que, a princípio, meu cursor não se move quando começo a digitar, para que todas as letras sejam inseridas no início do campo de texto.
Por exemplo, se eu estivesse digitando python
e digitando pyt
nos primeiros 10 milissegundos, o resultado seria
hontyp
Tarefa
Seu trabalho é simular esse comportamento no menor número de bytes possível.
Entrada
Você pode receber sugestões de qualquer método razoável. No entanto, você não pode aceitar a entrada como dois campos separados. O atraso de 10 milissegundos deve começar quando o programa começar a permitir entrada. Ou seja, você pode ter que fazer um pré-processamento antes da entrada ser permitida, o que não deve ser contabilizado nos 10 milissegundos.
É permitida alguma clemência no tempo, desde que em média 10 milissegundos e desligada em mais de 1 milissegundo, não mais que 1% do tempo em um computador com especificações razoáveis.
Resultado
Você pode imprimir a string de acordo com o método que achar melhor. Você pode atualizar ao vivo enquanto o usuário digita ou gerar o resultado após concluir a entrada (por uma nova linha ou pelo final do arquivo ^D
).
Casos de teste
Alguns destes foram gerados por este CMC no The XIX XIX Byte
First 10 | after | result
bra in-flak in-flakarb
ap ple plepa
code- golf golf-edoc
no ne neon
we st stew
ai med media
draw back backward
Respostas:
VimScript,
4847 bytesO Vim tem alguns bons recursos para isso. Requer o Vim 8.
Espera o texto digitado no modo de inserção, uma entrada bastante razoável para o VimScript. Explicação:
Minha abordagem inicial,,
se ri|sl10m|se ri&
não funciona, porque o texto é armazenado em buffer até depois do comando sleep, e não consegui encontrar uma maneira de contornar isso.fonte
HTML (JS), 96 bytes
Inicia o tempo para 1s desde o primeiro pressionamento de tecla, para que você possa vê-lo em ação.
fonte
JavaScript (ES6), 88 bytes
Demo
Da maneira como o snippet está funcionando, você precisará clicar dentro do quadro para que ele seja focado depois de clicar no botão Executar e antes de começar a digitar.
Não há como fazer isso em menos de 10 ms. Então, eu configurei o atraso para 1 segundo nesta demonstração - e mesmo assim, é melhor se apressar.
Mostrar snippet de código
fonte
Processando,
167165146 bytesLeva as entradas como teclas e as saídas para o console. Ele atualiza todos os quadros.
Explicação
fonte
asdf
+ghjk
. Se tudo estivesse em uma variável, depois dos 10 milissegundos, teríamosfdsa
nessa única sequência. Depois disso, quandog
for digitada, a sequência será anexadag
e tornadagfdsa
. Então, quandoh
digitado, não posso acrescentarh
à variável (porque a entrada ainda está invertida), precisarei usar sesubstring
tiver que calcular alength
variável String. Isso custará muitos bytes.a
eb
). Mesmo se eu atribuir o resultado a uma variável temp, o número de bytes resultante ainda será maior.C - 169 bytes
Bem, C não é o melhor para isso, pois não possui uma maneira independente de plataforma de fazer isso. Funciona sob MSVC.
Uma abordagem pouco invasiva, se você pode digitar mais de 9 caracteres em 10 ms, isso irá travar. Atualiza após um caractere de nova linha.
fonte
Python 2 ,
112106Se você quiser que a saída seja flush, sem inundar com linhas, utilize
print'\r'+a+b,
vezVocê precisará matar o processo para pará-lo
fonte