Erstellen Sie in einer beliebigen Programmiersprache ein Programm, das Eingaben entgegennimmt und den auf einer Tastatur eingegebenen Text animiert.
Die Verzögerung zwischen den einzelnen Zeichen sollte variieren, um das echte Tippen auf einer Tastatur zu simulieren. Die Verzögerung beträgt 0.1, 0.1, 0.5, 0.1, 0.1, 0.5 ...
Sekunden, bis das letzte Zeichen gedruckt wird. Die endgültige Ausgabe soll auf dem Bildschirm verbleiben.
Sie müssen die aktuelle Textzeile überschreiben, damit der Text nicht in neuen Zeilen gedruckt wird.
Beispiel die Eingabe "Hallo, PPCG! Auf Wiedersehen Erde!" sollte zu der folgenden Animation führen (beachten Sie, dass die Abtastrate des Gif-Herstellers niedrig war, sodass das wahre Ergebnis leicht davon abweicht):
Da dies Codegolf ist, gewinnt die kleinste Menge an Bytes.
Antworten:
C
1089389787380 BytesUngolfed-Version:
@Kritixi Lithos @Metoniem Vielen Dank für Ihre Eingabe! einige Bytes gespeichert.
Irgendwie
int i
gab mir gerade einen Segmentierungsfehler beim Ausführen, so dass ich ihn mit 0 initialisierte.quelle
i%3
die Verspätung 5 sein sollte100000
durch1e5
, um 3 Bytes zu rasieren1e5
funktioniert nicht auf meinem GerätGelee , 13 Bytes
Dies ist eine monadische Verknüpfung / Funktion. Aufgrund der impliziten Ausgabe funktioniert es nicht als vollständiges Programm.
Nachprüfung
Wie es funktioniert
quelle
MATLAB, 74 Bytes
Erläuterung:
Ich habe eine ganze Weile gebraucht, um die
fprintf
Version kürzer alsdisp()
mit zu machenclc
. Der Durchbruch war, als ich herausfand, dasspause
ein Vektor als Argument verwendet werden kann. In diesem Fall wird nur der erste Wert ausgewählt. Dadurch ist es möglich, einen Zähler wegzulassen.Der kürzeste, den ich verwendet habe,
disp
war 81 Bytes:quelle
printf
anstelle von tunfprintf
? Es funktioniert auf octave-online.net (aber es ist Octave und nicht Matlab)JavaScript (ES6), 67 Byte
quelle
Blocked form submission to '' because the form's frame is sandboxed and the 'allow-forms' permission is not set.
V ,
201918 Bytes1 Byte gespart dank @DJMcMayhem
1 Byte durch Entfernen
ò
am Ende gespeichertSchrecklich ungolfisch, ich weiß, es ist einfach so streng
u
und hindert mich daran, verschachtelte Schleifen zu benutzen.Erläuterung
Der Cursor beginnt am Anfang des Puffers, der das erste Zeichen der Eingabe ist.
Gif kommt bald ...
quelle
gÓ
ohne Zählung ist der Standardwert 500 ms, sodass Sie dort ein Byte speichern können. Denken Sie auch daran, dass Sie die zweite nicht brauchenò
!u
ndo kannst du nurp
asten?ò
weil sonst das Programm aufgrund des impliziten Zeilenumbruchs am Ende vorzeitig abgebrochen wird und einen Breaking Error verursacht.p
aste zu verwenden, aber leider bewegt es den Cursor an das Ende der Zeile und um zurückzukehren, würde ich so etwas brauchen, was``
meine Bytecount weiter erhöhen würdeMATL , 16 Bytes
Probieren Sie es bei MATL Online!
Erläuterung
quelle
Nudel , 18 Bytes
Versuch es:)
Wie es funktioniert
19-Byte- Code-Snippet, das endlose Schleifen durchläuft.
quelle
APL, 23 Bytes
Erläuterung:
quelle
C #
131BytesNicht viel zu erklären. Es wird nur eine Zeichenfolge (in "" eingeschlossen) als Argument verwendet und jedes Zeichen mit dem richtigen Verzögerungsmuster gedruckt. Nach der Animation wird ein angezeigt,
OutOfRangeException
da die Schleife nicht angehalten wird, nachdem alle Zeichen durchlaufen wurden. Da es sich um eine Endlosschleife handelt, bedeutet das auch, dass ich sieint Main
anstelle von verwenden kannvoid Main
;-)Golf gespielt
Ungolfed
Bearbeitungen
i
innerhalb derSleep()
Methode statt in derfor
Schleife vorgenommen wurde. (Danke Maliafo )quelle
Sleep(i++ [...])
to save an extra byte in the for loop ?SmileBASIC, 61 bytes
I think the delay calculation could be a lot shorter.
quelle
Clojure, 81 bytes
Loops over the input string zipped with a infinite list of
[100 100 500]
.quelle
Bash (+utilities), 32 byte
Golfed
Demo
quelle
Python 3,
8375 bytesTry it online!
quelle
,flush=1
.Powershell,
666563 Bytes-1 removed unneeded white space after
-m
-2 thanks to AdmBorkBork - used
1,1,5
and*
end result by100
instead of using100,100,500
takes
$args
as a char array, loops through sleeping as specified,Write-Host
with the-N
oNewline argument is used to write the chars out on the same line.Improvements?
[0..99]
instead of[char[]]
to save 1 byte, but wont work on strings over 100 chars.100,500
and[(++$i%3)-gt1]
but make it shorter somehow.Write-Host
can't find any way to make the last two work, and the first one isn't valid by any particular rule.
quelle
sleep -m((1,1,5)[++$i%3]*100)
Perl, 63 bytes
quelle
Python 3, 88 Bytes
quelle
Rebol, 65 bytes
Ungolfed:
quelle
Bash + coreutils, 57 bytes
quelle
Java 7,
151149 bytes-2 bytes thanks to @KritixiLithos for something I always forget..
Explanation:
Usage:
quelle
a[0].split("")
instead?split
in my Processing answer...Processing,
133131 bytesI tried doing
args[0]
and wrapping the argument in""
instead, but it does not work for some reason.Anyways... this is the first time I've written a Processing program that takes arguments. Unlike Java, you don't need to declare the arguments using
String[]args
, but the variableargs
will automatically be initialised to the arguments.Put it in a file called
sketch_name.pde
under a folder calledsketch_name
(yes, same name for folder and sketch). Call it like:quelle