Ich habe ein Problem mit meiner Tastatur (wahrscheinlicher ein Problem mit meinem Browser). Manchmal, wenn ich auf ein neues Textfeld klicke und mit der Eingabe beginne, wird mein gesamter Text rückwärts ausgegeben. Nach einer sehr kurzen Zeitspanne (für den Zweck der Herausforderung werden wir sagen, dass es 10 Millisekunden sind) wird die Eingabe vorwärts wieder aufgenommen. Es scheint, als würde sich mein Cursor zu Beginn der Eingabe nicht bewegen, sodass alle Buchstaben am Anfang des Textfelds eingefügt werden.
Wenn ich zum Beispiel tippe python
und pyt
in den ersten 10 Millisekunden tippe, ist das Ergebnis
hontyp
Aufgabe
Ihre Aufgabe ist es, dieses Verhalten in möglichst wenigen Bytes zu simulieren.
Eingang
Sie können Eingaben auf jede vernünftige Weise vornehmen. Sie können die Eingabe jedoch nicht als zwei separate Felder annehmen. Die Verzögerung von 10 Millisekunden sollte beginnen, wenn das Programm beginnt, Eingaben zuzulassen. Das heißt, Sie müssen möglicherweise eine Vorverarbeitung durchführen, bevor die Eingabe zulässig ist. Dies sollte nicht für die 10 Millisekunden gezählt werden.
Eine gewisse Nachsicht ist während des Timings zulässig, solange es durchschnittlich 10 Millisekunden dauert und auf einem vernünftig spezifizierten Computer in höchstens 1% der Fälle um mehr als 1 Millisekunde nachlässt.
Ausgabe
Sie können die Zeichenfolge in einer beliebigen Methode ausgeben, die Sie für richtig halten. Sie können entweder live aktualisieren, während der Benutzer tippt, oder das Ergebnis ausgeben, nachdem Sie die Eingabe abgeschlossen haben (entweder durch eine neue Zeile oder durch ein Dateiende ^D
).
Testfälle
Einige davon wurden von dieser CMC im neunzehnten Byte generiert
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
Antworten:
VimScript,
4847 BytesVim hat dafür einige nette Builtins. Benötigt Vim 8.
Erwartet im Einfügemodus eingegebenen Text, eine sehr sinnvolle Eingabe für VimScript. Erläuterung:
Meine anfängliche Vorgehensweise
se ri|sl10m|se ri&
funktioniert nicht, da der Text erst nach dem Befehl sleep zwischengespeichert wird und ich keinen Weg gefunden habe, dies zu umgehen.quelle
HTML (JS), 96 Bytes
Startet das Timing für 1s ab dem ersten Tastendruck, damit Sie es in Aktion sehen können.
quelle
JavaScript (ES6), 88 Byte
Demo
Wie das Snippet funktioniert, müssen Sie tun Sie in den Rahmen klicken, damit es den Fokus erhält, nachdem Sie auf die Schaltfläche Ausführen geklickt haben und bevor Sie mit der Eingabe beginnen können.
Es gibt keine Möglichkeit, dies in weniger als 10 ms zu tun. Also habe ich die Verzögerung in dieser Demo auf 1 Sekunde eingestellt - und trotzdem sollten Sie sich beeilen.
Code-Snippet anzeigen
quelle
Verarbeitung,
167165146 BytesÜbernimmt Eingaben als Tastenanschläge und gibt sie an die Konsole aus. Es aktualisiert jeden Frame.
Erläuterung
quelle
asdf
+ghjk
. Wenn alles in einer Variablen wäre, dann hätten wir nach den 10 Millisekundenfdsa
in dieser einen Zeichenfolge. Danach, wenng
eingegeben, wird die Zeichenfolge vorg
und werdengfdsa
. Wenn dann derh
eingegeben wird, kann ichh
der Variablen kein Präfix voranstellen (da die Eingabe dann immer noch umgekehrt ist), ich musssubstring
s verwenden und dielength
Variable dieser Zeichenfolge berechnen. Dies kostet eine Menge Bytes.a
undb
). Auch wenn ich das Ergebnis einer temporären Variablen zuordnete, ist der resultierende bytecount immer noch größer.C - 169 Bytes
Nun, C ist dafür nicht das Beste, da es dafür keine plattformunabhängige Methode gibt. Funktioniert unter MSVC.
Wenn Sie mehr als 9 Zeichen in 10 ms eingeben können, stürzt dies ab. Updates nach einem Newline-Zeichen.
quelle
Python 2 ,
112106Wenn die Ausgabe bündig sein soll, ohne mit Linien zu fluten, verwenden Sie
print'\r'+a+b,
stattdessenSie müssen den Prozess beenden, um ihn zu stoppen
quelle