J'ai un problème avec mon clavier (plus probablement un problème avec mon navigateur). Parfois, lorsque je clique sur un nouveau champ de texte et commence à taper tout mon texte sort à l'envers. Après un très court laps de temps (aux fins du défi, nous dirons qu'il s'agit de 10 millisecondes), il recommence à taper vers l'avant. Il semble qu'au début mon curseur ne bouge pas quand je commence à taper donc toutes les lettres sont insérées au début du champ de texte.
Par exemple, si je tapais python
et que je tapais pyt
dans les 10 premières millisecondes, le résultat serait
hontyp
Tâche
Votre travail consiste à simuler ce comportement dans le moins d'octets possible.
Contribution
Vous pouvez prendre connaissance de toute méthode raisonnable. Cependant, vous ne pouvez pas considérer l'entrée comme deux champs distincts. Le délai de 10 millisecondes doit commencer lorsque le programme commence à autoriser l'entrée. C'est-à-dire que vous pouvez avoir un prétraitement à faire avant que l'entrée ne soit autorisée, qui ne doit pas être comptée dans les 10 millisecondes.
Une certaine clémence est autorisée dans le temps tant qu'elle est en moyenne de 10 millisecondes et est désactivée de plus de 1 millisecondes pas plus de 1% du temps sur un ordinateur raisonnablement spécifié.
Production
Vous pouvez sortir la chaîne selon la méthode que vous jugez appropriée. Vous pouvez soit mettre à jour en direct au fur et à mesure que l'utilisateur tape ou afficher le résultat après avoir terminé la saisie (soit par une nouvelle ligne ou à la fin du fichier ^D
).
Cas de test
Certains d'entre eux ont été générés par ce CMC dans The Nineteenth 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
Réponses:
VimScript,
4847 octetsVim a de belles fonctionnalités pour cela. Nécessite Vim 8.
Attend du texte entré en mode insertion, une entrée très raisonnable pour VimScript. Explication:
Mon approche initiale,,
se ri|sl10m|se ri&
ne fonctionne pas parce que le texte est mis en mémoire tampon après la commande sleep, et je n'ai pas pu trouver un moyen de contourner cela.la source
HTML (JS), 96 octets
Commence le chronométrage pendant 1 seconde à partir de la première pression sur une touche pour vous donner une chance de le voir en action.
la source
JavaScript (ES6), 88 octets
Démo
Le mode de fonctionnement de l'extrait de code, vous devrez cliquer à l'intérieur de son cadre afin qu'il se concentre après avoir cliqué sur le bouton Exécuter et avant de commencer à taper.
Il n'y a aucun moyen de le faire en moins de 10 ms. J'ai donc réglé le délai à 1 seconde dans cette démo - et même ainsi, vous feriez mieux de vous dépêcher.
Afficher l'extrait de code
la source
Traitement,
167165146 octetsPrend les entrées sous forme de touches et les sorties vers la console. Il met à jour chaque image.
Explication
la source
asdf
+ghjk
. Si tout était dans une variable, alors après les 10 millisecondes, nous aurionsfdsa
dans cette seule chaîne. Après cela, lorsqueg
est tapé, la chaîne ajoutera leg
et deviendragfdsa
. Ensuite, lorsque leh
est tapé, je ne peux pas ajouterh
de préfixe à la variable (car alors l'entrée est toujours inversée), je devrai utilisersubstring
s et devra calculer lelength
de cette variable de chaîne. Cela coûtera beaucoup d'octets.a
etb
). Même si j'affecte le résultat à une variable temporaire, le nombre d'octets résultant est toujours plus grand.C - 169 octets
Eh bien, C n'est pas le meilleur pour cela car il n'a pas de moyen indépendant de la plate-forme de le faire. Fonctionne sous MSVC.
Peu d'une approche hacky, si vous pouvez taper plus de 9 caractères en 10 ms, cela plantera. Mises à jour après un caractère de nouvelle ligne.
la source
Python 2 ,
112106Si vous voulez que la sortie soit à fleur, sans inondation de lignes, utilisez
print'\r'+a+b,
plutôtVous devrez tuer le processus pour l'arrêter
la source